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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© nicholyx 中级黑马   /  2014-3-14 11:58  /  908 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

父类引用可以指向子类对象,例如class B extends A{},主方法中A a = new B();那么父类引用a可以访问A类中的属性或者方法,a不可以访问B类中新增加的属性和方法,这个是没有问题的。a也可以调用B类中重写了A类的方法,这个也是可以的。
但是如果B类重写了A类的方法中,同时调用了B类中自己新增加的属性或者方法,那么运行也是没有问题的?这个不明白,求大神解释?
结合代码如下:

  1. class A {
  2.         public String name;
  3.         void show() {
  4.                 System.out.println("A.....show " + name + " ");
  5.         }
  6.         void fn() {
  7.                 System.out.println("A....fn " + name + " ");
  8.         }
  9. }
  10. class B extends A {
  11.         public int age;
  12.         void show() {
  13.                 fnx();
  14.                 System.out.println("B.....show "+name + " "+age);
  15.         }
  16.         void fnx() {
  17.                 System.out.println("B.....fnx "+name + " "+age);
  18.         }
  19. }
  20. class MainDemo {
  21.         public static void main(String[] args) {
  22.                 A a = new B();
  23.                
  24.                 a.name = "张三";//可以,访问父类自己的属性
  25.                 a.fn();//可以,访问父类自己的方法
  26.                
  27.                 //a.age = 11;//不可以,访问了子类新增加的属性
  28.                 //a.fnx();//不可以,访问了子类新增加的方法
  29.                 a.show();//可以,访问子类重写了父类的方法,但是该重写方法
  30.                                  //中调用了子类新增加的方法和属性,求解释?       
  31.             /*
  32.                 运行结果如下:
  33.                 A....fn 张三
  34.                 B.....fnx 张三 0
  35.                 B.....show 张三 0
  36.                 */
  37.         }
  38. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

2 个回复

正序浏览
如果要运行子类特有的方法,A a = new B();  a就不行,但是可以进行强制转换:B a=(B)a;这样就可以用a访问子类特有的方法了。

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
可以看看那个第七天的视频教程。我感觉就是,A  a=new B(),a虽然被定义的是A类,但是他里面有B新加的方法,A里面没有这些方法所以不能直接调用。但是现在show()被重写了,他里面写了调用fnx()的方法,而fnx()又存在于a这个对象的方法中,所以调用没问题吧

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马