日期:2014-05-20  浏览次数:20732 次

关于类继承的小问题
1、子类对象转化为父类对象后,能调用子类中新增的属性及方法吗?

2、子类中覆写了父类的某个方法,那么当子类对象转为父类对象后,调用这个方法时,所调用的是子类中的还是父类中的?

------解决方案--------------------
1.能
2.子类
------解决方案--------------------
关于第一题,看变量的类型,如果是父类的,只有父类的属性方法,子类同样
若果是多态,属性还是父类,方法是子类
------解决方案--------------------
1.不能
2.子类
------解决方案--------------------
探讨

1.不能
2.子类

------解决方案--------------------
1、子类对象转化为父类对象后,能调用子类中新增的属性及方法吗?

不能 ,你用父类对象的引用 ,再用.操作符都看不到子类中新增的属性和方法 ,向上转型,不安全 ;

2、子类中覆写了父类的某个方法,那么当子类对象转为父类对象后,调用这个方法时,所调用的是子类中的还是父类中的?

子类的, 调用方法 ,转型前创建的是哪个类的对象,调用还是哪个对象的方法 ;
------解决方案--------------------
探讨

1.能
2.子类

------解决方案--------------------
探讨

引用:

1.能
2.子类


+1

------解决方案--------------------
1 不能
2 子类
测试代码:
Java code

public class Test {
    public static void main(String[] args) {
        Son s = new Son();
        Parent p = (Parent)s;
        p.print();
        //p.foo();
    }
}
class Parent{
    void print(){
        System.out.println("parent print");
    }
}
class Son extends Parent{
    void print(){
        System.out.println("son print");
    }
    void foo(){
        System.out.println("son foo()");
    }
}