A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  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,多态中的成员变量不是运行时调用父类的成员变量吗?

3 个回复

倒序浏览
B继承于A,当然有num这个成员变量,在生成实例时将200赋值给num,正常吧。
回复 使用道具 举报
第一个问题:你NEW了一个B类,B继承A,所以A已经定义了num,不用写数据类型。第二个问题:你定义的A类多态实际上里面是一个B类,B里面重新赋值,所以输出200
回复 使用道具 举报
B继承了A的int num B中也有一个int num当然可以在构造函数中直接赋值了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马