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();
}
}
网友评论