----------------------
android培训、
java培训、期待与您交流! ----------------------
---------------------
ASP.Net+Android+IOS开发、
.Net培训、期待与您交流! ----------------------
多态:事物存在多种体现形态
好处:提高程序的扩展性
弊端:因为使用了父类引用,所以
只能访问父类成员,不能访问子类特有的成员
使用前提:有继承关系或实现关系的类
abstract class Animal
{
abstract public void eat(); //到具体动物里再实例化
}
class Cat extends Animal //除了Cat还可以定义各种具体的动物
{
public void eat() //实例化eat方法
{
System.out.println("猫吃");
}
public void catchMouse() //特有的catchMouse方法
{
System.out.println("抓老鼠");
}
}
class DuotaiTest
{
public static void main(String[] args)
{
Animal x=new Cat(); //自动向上转型,无论new出什么具体动物都提升到Animal类型
x.eat();
function(new Cat()); //和上一句执行的结果一样,都对一个新Cat使用eat方法
}
public static void function(Animal a) //不论传进来的a是哪种具体动物,都已经提升到Animal了
{
a.eat(); //这个具体子类里的方法已经重写,不同的动物进来执行不同的eat方法
//不能写a.catchMouse();,因为这里a的引用是Animal类型,父类里没有catchMouse方法
Cat b=(Cat)a; //只能这样把a的引用向下转换成Cat类型,再使用catchMouse方法
b.catchMouse();
}
}