本帖最后由 高志鹏 于 2012-12-4 12:27 编辑
- abstract class Animal{
- abstract void eat();
- }
- class Cat extends Animal{
- void eat(){
- s.o.p("fish")
- }
- void catchMouse(){
- s.o.p("do catch")
- }
- }<div class="blockcode"><blockquote>
复制代码 class Demo{
public static void main(String[] args){
Animal a = new cat();
//当需要调用到猫中的特有功能捉老鼠时,需要向下转型,
Cat c = (Cat)a;
c.catchMouse
Student s = new BaseStudent();
//此处运行结果是“坐着睡”,在调用到basestudent的特有功能sleep的时候,为什么没有进行转型,反而能够得到的却是子类的特有功能呢?
s.sleep;
}
}- abstract class Student{
- public abstract void study();
- public void sleep(){
- s.o.p("躺着睡");
- }
- }
- class BaseStudent extends Student{
- public void study(){
- s.o.p("base study");
- }
- public void sleep(){
- s.o.p("坐着睡");
- }
- }
复制代码 不明的地方在代码中红字的标示。
|