父类:
public class Supclass {
public void print() {
System.out.println("this is 父类print()方法" + "——此时对象" + this.toString());
}
}
子类:
public class Subclass extends Supclass {
public void print() {
System.out.println("this is 子类print()方法" + "——此时对象" + this.toString());
}
public void subMethod() {
System.out.println("子类 自己的方法!");
}
}
父类引用指向子类对象:
Supclass sup = new Subclass();
sup.print();
((Subclass)sup).subMothed();
System.out.println("此时对象" + sup.toString());
父类指向一个子类初始化的对象,父类可直接调用子类继承的方法(print),但是父类是无法调直接调用子类中独有的方法(子类自己拓展的方法subMethod),但是内存中真实存在的对象是子类的,这个对象是具有独有方法(subMethod)的,所以父类的引用可以强转为子类,就可以调用独有方法(subMethod)。
子类引用指向父类类对象:
Subclass subclass= (Subclass) new Supclass();
subclass.print();
System.out.println(""+subclass.toString());
子类是要对父类进行扩展的,父类的对象中是不能完全符合子类的要求的,所以在Subclass subclass= (Subclass) new Supclass();这一段就会报错的。