当从引用变量调用实例方法时,该变量的实际类型在运行时决定使用该方法的哪个实现。当访问数据域或静态方

当从引用变量调用实例方法时,该变量的实际类型在运行时决定使用该方法的哪个实现。当访问数据域或静态方法时,引用变量的声明类型在编译时决定使用哪个方法。这两句话是什么意思?能... 当从引用变量调用实例方法时,该变量的实际类型在运行时决定使用该方法的哪个实现。当访问数据域或静态方法时,引用变量的声明类型在编译时决定使用哪个方法。这两句话是什么意思?能不能给个通俗的解释。 展开
 我来答
匿名用户
推荐于2016-05-02
展开全部
第一句话,其实就是多态的实现,java支持继承,假设B继承A,A中有一个print方法,B重写了A的print方法,在实例化时A a= new A();A b = new B(); 声明类型虽然都是A,但是执行的方法却是由实际类型决定的,变量a执行的是A的print方法,变量b执行的是B重写过的print方法。

第二句话,你说的数据域应该是静态代码块,类的静态方法,静态变量是在类装载的时候装载的。这些是使用公共内存空间的,就是说所有对象都可以直接引用,不需要创建对象再使用该方法。还是刚才的例子,A有静态方法static printStatic();B也有静态方法static printStatic();,但是这不是重写,虽然编译器也不会报错。如果你试图重写静态方法,Java不会阻止你这么做,但你却得不到预期的结果。所以A a= new A();A b = new B();a.printStatic()与b.printStatic()方法调用的都是A中的静态方法,也就是由声明类型决定,但是一般不推荐这么写,一般调用静态方法不需要创建实例,如:直接A.printStatic()即可,如果你要调用B中的可以B.printStatic()
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式