黑马程序员技术交流社区

标题: 多态绕晕了,为什么子类的构造函数中可以直接写num=200而不用写它的数据类型呢 [打印本页]

作者: yyt199108    时间: 2015-11-23 19:35
标题: 多态绕晕了,为什么子类的构造函数中可以直接写num=200而不用写它的数据类型呢
  1. class A
  2. {
  3.         public int num=300;
  4.         public A(){
  5.                 num=100;
  6.         }
  7. }
  8. class B extends A
  9. {
  10.         public B(){
  11.                 num=200;
  12.         }
  13. }
  14. class test{
  15.         public static void main(String[] args){
  16.                 A a=new B();
  17.                 System.out.println(a.num);
  18.         }
  19. }
复制代码

为什么子类的构造函数中可以直接写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