作者conan77420 (小马非马)
看板java
标题[问题] 配置记忆体的新手级问题
时间Sat Jun 6 11:52:28 2009
刚接触java,还在摸索中请多多包含
参考网页:
http://programming.im.ncnu.edu.tw/J_index.html
内容:
class Animal {
private String moveMethod() {
return "Unspecified";
}
public static void main(String[] argv) {
Animal a1;
a1 = new Bird();
System.out.println(a1.moveMethod()); // print out "Unspecified"
}
}
class Bird extends Animal {
// this is not override because Bird can't see Animal's moveMethod
public String moveMethod() {
return "Fly";
}
}
这边在讲的是override中static不能被覆写的观念,我想问的是
Animal a1 = new Bird(); 跟
Bird a1 = new Bird();
差别在哪?
乱猜:
跟〝父类别class是abstruct的话一定要靠子类别去override才能new物件〞有关吗?
==========================================================
因为我是自学没有老师可以问,如果问题太笨不要见笑 > <
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.229.129.83
1F:推 coolsprite:你的Animal不是abstruct吧 06/06 12:39
2F:→ conan77420:嗯不是,但我只是想在其他例子下是不是这可能 06/06 12:42
3F:推 coolsprite:如果子类别看不到父类别的方法(如父类别的private方法, 06/06 13:18
4F:→ coolsprite:而子类别定义了父类别内的package method),则就算定义 06/06 13:19
5F:→ coolsprite:了同样的method,也不是override (你给的网站上写的) 06/06 13:21
6F:推 Puser:上面那个现在是Animal 现在只能存取a的栏位方法 不能存取b的 06/06 14:07
7F:→ conan77420:如果Animal的不是static,而我打bird a1=new bird()的 06/06 15:00
8F:→ conan77420:话,跟打Animal a1=new bird()有何不同? 06/06 15:02
9F:推 Puser:Animal a1=new bird() al被向上转型(cast)成Animal 测看就知 06/06 15:33
10F:→ Puser:不知道为什麽不能向下铸型 要请强者大大出来分说@@" 06/06 15:35
11F:推 Kelunyang:Bird b1 = (bird)a1 为什麽不行@@? 06/07 18:14