我表达不清楚,结合代码楼主体会一下:class Father { } class Son extends Father { } public class FatherAndSon { public static void main(String[] args) { Father f0; //声明父类对象引用。 Son s0; //声明子类对象引用。 Father f1= new Father(); //声明并创建父类和子类对象 Son s1= new Son(); f0=s1; //声明为父类引用可以指向子类对象。 //s0=f1; //声明为子类的引用不能指向父类对象。 s0=(Son)f0; //可强制转型。 //或者这样。 Father f2= new Son(); //直接声明父类引用,创建子类对象。 Son s2 =(Son)f2; //强制转型。 } }
{
}
class Son extends Father
{
}
public class FatherAndSon
{
public static void main(String[] args)
{
Father f0; //声明父类对象引用。
Son s0; //声明子类对象引用。
Father f1= new Father(); //声明并创建父类和子类对象
Son s1= new Son();
f0=s1; //声明为父类引用可以指向子类对象。
//s0=f1; //声明为子类的引用不能指向父类对象。
s0=(Son)f0; //可强制转型。 //或者这样。
Father f2= new Son(); //直接声明父类引用,创建子类对象。
Son s2 =(Son)f2; //强制转型。
}
}
2、父类型的引用指向子类型的对象的时候,就是我们常说的“多态”。
3、父类不能直接转换成子类型,因为这样可能会丢失很多数据,java认为这样做是很危险的。
例子:父类:Father 子类:son
Father f = new son();
son s = (son) new Father();