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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. class Demo {
  2.         String s = "Outer";

  3.         public static void main(String[] args) {
  4.                 S2 s2 = new S2();
  5.                 s2.display();
  6.         }
  7. }

  8. class S1 {
  9.          String s = "s1";

  10.         public void display() {
  11.                 System.out.println(s);
  12.         }
  13. }

  14. class S2 extends S1 {
  15.         String s = "s2";
  16.         
  17. }
复制代码

评分

参与人数 1黑马币 +12 收起 理由
814326663 + 12

查看全部评分

9 个回复

倒序浏览
是的   S2继承S1  就可以调用父类方法,而S1中的display()方法中的s没有特殊说明(super)默认的就是(this)他自己的,
回复 使用道具 举报

RE: 问下 s2.dispaly(); 调用的是S1中的S还是调用S2中的S

菜鸟的求学路 发表于 2015-5-12 12:08
是的   S2继承S1  就可以调用父类方法,而S1中的display()方法中的s没有特殊说明(super)默认的就是(this)他 ...

S2继承了S1 不是说明了我子类中也有了display()方法吗     这时候的s如果是this.s的话那结果不就是S2了  但是我运行的时候结果是S1  
回复 使用道具 举报
继承了只是说明你可以用   但毕竟不是自己的吧   父类的方法里面用的当然是父类自己的啊   每一个变量都有他的作用域的啊
回复 使用道具 举报
先在  儿子这里找  没找到  找他爹
回复 使用道具 举报 1 0
形象呀,不错不错
回复 使用道具 举报
赵旗 发表于 2015-5-12 14:35
S2继承了S1 不是说明了我子类中也有了display()方法吗     这时候的s如果是this.s的话那结果不就是S2了   ...

如果你S2种 写一个 display 输出的是 S2 的信息, 因为你没覆盖 父类的方法   所以还是  S1的结果。
回复 使用道具 举报
运行结果是:s1 ,当父类和子类中存有重名的成员变量,若在子类方法调用该变量,若不指明是父类的,那么会先使用子类的成员变量
回复 使用道具 举报
赵旗 中级黑马 2015-5-13 21:20:26
9#
CoeusLYJ 发表于 2015-5-13 14:14
运行结果是:s1 ,当父类和子类中存有重名的成员变量,若在子类方法调用该变量,若不指明是父类的,那么会 ...

明白了 谢谢
回复 使用道具 举报
好吧 我也就是过来看看 没什么 加油吧
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马