黑马程序员技术交流社区

标题: 问下 s2.dispaly(); 调用的是S1中的S [打印本页]

作者: 赵旗    时间: 2015-5-12 11:46
标题: 问下 s2.dispaly(); 调用的是S1中的S
  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. }
复制代码

作者: 菜鸟的求学路    时间: 2015-5-12 12:08
是的   S2继承S1  就可以调用父类方法,而S1中的display()方法中的s没有特殊说明(super)默认的就是(this)他自己的,
作者: 赵旗    时间: 2015-5-12 14:35
标题: 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  
作者: 菜鸟的求学路    时间: 2015-5-12 15:53
继承了只是说明你可以用   但毕竟不是自己的吧   父类的方法里面用的当然是父类自己的啊   每一个变量都有他的作用域的啊
作者: 黑马LM    时间: 2015-5-12 21:06
先在  儿子这里找  没找到  找他爹
作者: 东大小宇哥    时间: 2015-5-12 21:17
形象呀,不错不错
作者: Drenched丶    时间: 2015-5-13 11:28
赵旗 发表于 2015-5-12 14:35
S2继承了S1 不是说明了我子类中也有了display()方法吗     这时候的s如果是this.s的话那结果不就是S2了   ...

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

明白了 谢谢
作者: 814326663    时间: 2015-5-16 21:19
好吧 我也就是过来看看 没什么 加油吧




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2