java, 怎么调用其他class里的函数?有返回值的。菜鸟在线等,求高手解答!

java, 怎么调用其他class里的函数?有返回值的。菜鸟在线等,求高手解答!,第1张

java 一个类通过类名调用不在同一个包里的另一个类的函数

这样你把函数写成静态的 static,然后就可以通过类名来调用了,

否则就是new对向后在调用

举个例子:

//文件 : Ajava

package comthread;

public class A {

public static void method(){

Systemoutprintln("call method");

}

}

//文件:Bjava

package comheatontest;

import comthreadA;

public class B {

public static void main(String[] args) {

// TODO Auto-generated method stub

}

public void callMethod(){

Amethod();//直接通过类名调用

}

}

这样调用

1 如果在子类中调用 ,那么先new 一个参数所在类型的对象a,即 A a = new A(),然后在子类中用super(a)就可以调用父类的带类参数构造方法。

2 如果在其他类中调用,那么也需要先new 一个参数所在类型的对象a,即 A a=new A();,然后new调用类的的时候把参数传进去就可以了,B b = new B(a)。

首先你的代码 写错的几个地方 ,

按照你的意思 运行结果因为

B0

B0

B0

c++中是调用还是引用,(我感觉还是引用,)我记不清了。 但是 在c++中要是重载 ,就要是用 虚函数。

否则 ,只能是达到 子类同名函数 覆盖 了基类同名的 函数。 而 基类 对象 引用 子类对象 时,并不能达到 多态性 。 要使 之达到多态性,就使用 虚函数 。

#include<iostream>

using namespace std;

class B0

{

public:

virtual void display(){cout<<"B0"<<endl;}

};

class B1:public B0

{

public:

void display(){cout<<"B1"<<endl;}

};

class D1:public B1

{

public:

void display(){cout<<"D1"<<endl;}

};

void fun(B0 ptr)

{

ptr->display();}

int main(){

B0 b0,p;

B1 b1;

D1 d1;

p=&b0;

fun(p);

p=&b1;

fun(p);

p=&d1;

fun(p);

return 0;

}

这就是使用虚函数。只要在 基类某个函数前加个virtual 修饰。

而java中,没那么复杂,多态性与生俱来,

至于由继承而引发的多态性的过程,我曾经也分析过,

你可以看下:

我认为a是引用了B创建的对象,但这个不是完全的引用,就是说他数据内容缩小了,只取了new B()的一部分。这个过程方法的运行多态性也就体现了,实际上是多态性的第2种情:由继承机制而产生的方法覆盖。 好了,方法有覆盖,但变量只有隐藏,没有覆盖,对于属性的话,在子类中,父类的同名的变量成员会隐藏,但是父类引用子类对象的时候,不会覆盖父类本身的属性。即:多态性不发生在数据成员上,当然也不会发生在静态成员上。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/11670341.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存