父类引用子类对象
学习过java的人都知道,java语言中存在向上转型和向下转型。向上转型是指从更具体的类型被引用为较抽象的类型,或者是表示范围小的向范围大的转化。如 father f=new son();或是long a=(long)n;后者的理解比较简单,C语言中已经讲的很明白了,重要的是分析前者。
父类引用子类对象的情况,一般是在实现和使用接口中使用,一是为了方便调用接口的方法,二是更好的处理接口实现的类。如下代码中的父类引用子类对象的例子。
class Father{ public String name="Father"; public Stirng getname(){ System.out.println("这是父类"); return name; }public class Son extends Father{ Son() { name="Son"; } public String getname(){ System.out.println("这是子类"); return name; } public void setname(String name){ this.name=name; } public static void main(String[] args){ Father f=new Son(); System.out.println(f.name); System.out.println(f.getname()); f.setname("Father);//出错 Son s=new Son(); System.out.println(f.name); System.out.println(f.getname()); f.setname("Father);//正确 System.out.println(f.name); }}结果输出:Father这是子类SonSon这是子类Father