黑马程序员技术交流社区
标题:
多态绕晕了,为什么子类的构造函数中可以直接写num=200而不用写它的数据类型呢
[打印本页]
作者:
yyt199108
时间:
2015-11-23 19:35
标题:
多态绕晕了,为什么子类的构造函数中可以直接写num=200而不用写它的数据类型呢
class A
{
public int num=300;
public A(){
num=100;
}
}
class B extends A
{
public B(){
num=200;
}
}
class test{
public static void main(String[] args){
A a=new B();
System.out.println(a.num);
}
}
复制代码
为什么子类的构造函数中可以直接写num=200而不用写它的数据类型呢?
它的输出为什么会是200,多态中的成员变量不是运行时调用父类的成员变量吗?
作者:
yqlbd
时间:
2015-11-23 20:16
B继承于A,当然有num这个成员变量,在生成实例时将200赋值给num,正常吧。
作者:
等风来!
时间:
2015-11-23 20:47
第一个问题:你NEW了一个B类,B继承A,所以A已经定义了num,不用写数据类型。第二个问题:你定义的A类多态实际上里面是一个B类,B里面重新赋值,所以输出200
作者:
你是对的
时间:
2015-11-23 21:44
B继承了A的int num B中也有一个int num当然可以在构造函数中直接赋值了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2