黑马程序员技术交流社区

标题: 问一个基础的问题,关于继承的 [打印本页]

作者: 夕风秋凉    时间: 2015-11-22 22:25
标题: 问一个基础的问题,关于继承的
class Demo {
String s = "Outer";
public static void main (String[] args) {
S2 s2 = new S2();
s2.display();
}
}
class S1 {
String s = "S1";
public void display(){
System.out.println(s);
}
}
class S2 extends S1 {
String s = "S2";
}  

这题答案是S1  因为·继承,子对象里面有两个s,一个是父类的,一个是子类的,怎么确定,怎么去理解,赢比喻最好啦
作者: 夕风秋凉    时间: 2015-11-22 22:39
答案为什么是S1而不是S2
作者: yaoyeqing    时间: 2015-11-22 22:42
路过,赞赞赞
作者: 夕风秋凉    时间: 2015-11-22 23:13
yaoyeqing 发表于 2015-11-22 22:42
路过,赞赞赞

又来水。。。。。。。
作者: 隔壁马良    时间: 2015-11-22 23:20
看一下多态,对成员变量编译看父类,运行看父类,对成员方法编译看父类,运行看子类(动态绑定),应该是酱紫
作者: 夕风秋凉    时间: 2015-11-23 00:03
隔壁马良 发表于 2015-11-22 23:20
看一下多态,对成员变量编译看父类,运行看父类,对成员方法编译看父类,运行看子类(动态绑定),应该是酱 ...

这里好像没有多态哦  是直接建立子类对象  我觉得还是就近原则  好理解一点
作者: 迷茫不堪的年纪    时间: 2015-11-23 00:18
...洗洗睡吧, 调的子方法
作者: 夕风秋凉    时间: 2015-11-23 00:37
迷茫不堪的年纪 发表于 2015-11-23 00:18
...洗洗睡吧, 调的子方法

什么意思啊大神,,真心有点绕的  按照就近原则?虚拟机去轮流找方法,然后轮流找要访问的东西吗?也就是就近原则吗?  可以理解为, 继承只是一种字父类关系,因为他们这种关系,所以父类数据子类可以用?
作者: 迷茫不堪的年纪    时间: 2015-11-23 00:41
他本身(子类)没有dipaly方法, 所以调用父类的 dispaly方法,输出的是S1
作者: 夕风秋凉    时间: 2015-11-23 00:47
迷茫不堪的年纪 发表于 2015-11-23 00:41
他本身(子类)没有dipaly方法, 所以调用父类的 dispaly方法,输出的是S1

所以继承意思是,子类没有的东西去父类找,因为他们之间存在继承关系,而并不是把它继承过来吗
作者: 夕风秋凉    时间: 2015-11-23 00:48
迷茫不堪的年纪 发表于 2015-11-23 00:41
他本身(子类)没有dipaly方法, 所以调用父类的 dispaly方法,输出的是S1

我开始一致理解为,父类的东西继承过来,其实应该准确理解为,父类的东西,子类可以用吗
作者: 夕风秋凉    时间: 2015-11-23 00:50
迷茫不堪的年纪 发表于 2015-11-23 00:41
他本身(子类)没有dipaly方法, 所以调用父类的 dispaly方法,输出的是S1

哦  不对  应该是  父类那个方法想表达的意思是输出父类数据,你继承把方法拿过来,当然也得输出父类的东西,是不是这个意思,要尊重父类方法想表达的意思
作者: ……_JKQqB    时间: 2015-11-23 16:32
形象的例子说明最好了!
作者: 等风来!    时间: 2015-11-23 21:20
子类调用父类函数输出一个s,s的值子类里重新赋值了,你new的是子类,用的就是子类的值。
作者: 迷茫不堪的年纪    时间: 2015-11-24 00:38
夕风秋凉 发表于 2015-11-23 00:47
所以继承意思是,子类没有的东西去父类找,因为他们之间存在继承关系,而并不是把它继承过来吗 ...

所谓的继承,就是自己没有就拿老爹的没有被私有的,
作者: lovetonia    时间: 2015-11-24 06:56
本帖最后由 lovetonia 于 2015-11-24 06:57 编辑

不继承也没多态,成员变量就是爸爸的身高,只要不是喜当爹,矮爹生不出高儿子
作者: 夕风秋凉    时间: 2015-11-25 00:39
lovetonia 发表于 2015-11-24 06:56
不继承也没多态,成员变量就是爸爸的身高,只要不是喜当爹,矮爹生不出高儿子 ...

6             {:2_30:}
作者: Camwly    时间: 2015-11-25 09:33
看不懂呢
作者: 迷茫不堪的年纪    时间: 2015-11-25 23:25
夕风秋凉 发表于 2015-11-23 00:48
我开始一致理解为,父类的东西继承过来,其实应该准确理解为,父类的东西,子类可以用吗 ...

部分是可以的.  但是私有化的不可以, 因为被继承不了.  部分方法是继承的/
作者: oup    时间: 2015-11-25 23:31
还真没意识到这个问题啊
作者: 迷路森林    时间: 2015-11-25 23:38
就近原则~
作者: 袁有福123    时间: 2015-11-25 23:57
继承 S2是子类  S1是父类  在demo里面用的s2.display();方法 会先找子类本身的方法   如果子类没有 就会找父类的方法 从而打印S1
作者: anuo    时间: 2015-11-28 15:59
夕风秋凉 发表于 2015-11-23 00:48
我开始一致理解为,父类的东西继承过来,其实应该准确理解为,父类的东西,子类可以用吗 ...

当然不是所有的东能用啊




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