抽象类作为方法的返回值

2018-06-30  本文已影响162人  wangfs
1.1 定义一个抽象类
package cn.itcast.abstractclass;

public abstract class Animal {
    public abstract void eat();
}
1.2 抽象类的子类
package cn.itcast.abstractclass;

public class Cat extends Animal {

    public void eat() {
        System.out.println("猫在吃鱼");
    }

}
1.3 定义一个类,抽象类作为该类的方法的返回值
package cn.itcast.abstractclass;

public class GetAnimal {
    /*
     * 定义方法,方法返回值是Animal类型
     * 抽象类,抽象类是没有对象的,因此在方法的return后,返回Animal的子类对象
     * */
    
    //此处定义了返回值类型是Animal,后面在做测试类引用的时候,调用此方法时赋值给引用变量,引用变量类型不能是子类类型,除非向下转型
    public Animal getAnimal() { 
        return new Cat();//new Cat()被自动提升为Animal类型,向上转型
    }
}
1.4 定义一个测试类
package cn.itcast.abstractclass;

public class TestReturn {
    public static void main(String[] args) {
        //调用GetAnimal类的方法,getAnimal,返回值是Animal类型
        GetAnimal g = new GetAnimal();
        Animal a = g.getAnimal();//方法的返回值是Animal类型(而不是Cat类),return new Cat()。可看下GetAnimal类中的getAnimal方法的返回值类型
        a.eat();
    }
}
上一篇下一篇

猜你喜欢

热点阅读