关于类继承的小疑点
关于类继承的小问题
1、子类对象转化为父类对象后,能调用子类中新增的属性及方法吗?
2、子类中覆写了父类的某个方法,那么当子类对象转为父类对象后,调用这个方法时,所调用的是子类中的还是父类中的?
------解决方案--------------------
1.能
2.子类
------解决方案--------------------
关于第一题,看变量的类型,如果是父类的,只有父类的属性方法,子类同样
若果是多态,属性还是父类,方法是子类
------解决方案--------------------
1.不能
2.子类
------解决方案--------------------
------解决方案--------------------
1、子类对象转化为父类对象后,能调用子类中新增的属性及方法吗?
不能 ,你用父类对象的引用 ,再用.操作符都看不到子类中新增的属性和方法 ,向上转型,不安全 ;
2、子类中覆写了父类的某个方法,那么当子类对象转为父类对象后,调用这个方法时,所调用的是子类中的还是父类中的?
子类的, 调用方法 ,转型前创建的是哪个类的对象,调用还是哪个对象的方法 ;
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------
1 不能
2 子类
测试代码:
1、子类对象转化为父类对象后,能调用子类中新增的属性及方法吗?
2、子类中覆写了父类的某个方法,那么当子类对象转为父类对象后,调用这个方法时,所调用的是子类中的还是父类中的?
------解决方案--------------------
1.能
2.子类
------解决方案--------------------
关于第一题,看变量的类型,如果是父类的,只有父类的属性方法,子类同样
若果是多态,属性还是父类,方法是子类
------解决方案--------------------
1.不能
2.子类
------解决方案--------------------
------解决方案--------------------
1、子类对象转化为父类对象后,能调用子类中新增的属性及方法吗?
不能 ,你用父类对象的引用 ,再用.操作符都看不到子类中新增的属性和方法 ,向上转型,不安全 ;
2、子类中覆写了父类的某个方法,那么当子类对象转为父类对象后,调用这个方法时,所调用的是子类中的还是父类中的?
子类的, 调用方法 ,转型前创建的是哪个类的对象,调用还是哪个对象的方法 ;
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------
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()"); } }