作者king19880326 (OK的啦~我都可以接受)
看板java
标题[问题] 请问有关於head first java书上程式码的问题??
时间Mon Jul 28 21:52:41 2008
这是出自head first java 一书 p.255
以下是程式码 :
-------------------------------------------------------------------------
abstract class Animal{
private String name;
public String getName(){
return name;
}
public Animal(String theName){
name = theName;
}
}
class Hippo extends Animal{
public Hippo(String name){
super(name);
}
}
public class MakeHippo{
public static void main(String[] s){
Hippo h = new Hippo("Buffy") ;
System.out.println(h.getName());
}
}
--------------------------------------------------------------------------
这是执行结果 :
% java MakeHippo
Buffy
因为 name 这个变数是private的
所以不会被 Hippo 继承下来
而getName() 这个 method 因为是public
所以会被继承下来
也就是说
目前的 Hippo 这个 class 只有自己的 constructor 和 getName
(还有 Animal 的 constructor??)
那在我的想法里 getName 应该是看不到 name 这个 variable OTZ
目前我提出的解释是这样 :
就是虽然说继承可以只写一份程式码
可是本质上还是跟写在各自的 class 不大相同
我记得之前看一本书上说
instance method 都会多传一个 this 当作是参数
所以我猜测 Animal 这个 class 里 getName() 可以说是
public String getName(Animal this){
return this.name;
}
而 Hippo 这个 class 里的 getName() 或许就是
public String getName(Hippo this){
return super.getName(this);
}
因为有 polymorphism
所以导致仍然看得到 name 这个 variable
不知道我这样说对不对哩 @@>??
请大家指教 <(__)>
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 125.233.241.84
1F:推 pinglunliao:这跟 Access Modifiers (private, public) 有关 07/31 08:22
2F:→ pinglunliao:这范例还称不上 polymorphism 的应用 07/31 08:24