/*
多态及其拓展性
多态:可以理解为事物存在的多种形态
动物:猫 狗
猫x=new 猫();
狗x=new 狗();
1.多态的体现
父类的引用指向自己子类的对象
父类引用接收自己子类的对象
2.多态的前提
必须是类与类之间有关系,要么继承要么实现
而且要存在覆盖
3.多态的好处
提高了程序的拓展性
4.多态的弊端
提高了拓展性但只能使用父类的引用访问父类成员
*/
class Demo
{
public static void main(String []args)
{
/*
Cat c=new Cat();//1
Dog d=new Dog();
c.eat();
d.eat();
Cat c1=new Cat();//2
Cat c2=new Cat();
function(c1);
function(c2);
function(new Dog());
function(new Pig());
*/
/*
一个对象具有多种属性 看第一条
Animal c=new Cat();
c.eat();
*/
function(new Cat());//3
function(new Dog());
function(new Pig());
}
/*
public static void function(Cat c)//2
{
c.eat();
}
public static void function(Dog d)
{
d.eat();
}
public static void function(Pig p)
{
p.eat();
}
*/
/*
提高了代码的扩展性
*/
public static void function(Animal a)//3 该句相当于Animal a=new Cat();
{
a.eat();
}
}
abstract class Animal
{
public abstract void eat();//体系的基本功能,向上抽取出来的,里面定义的一定是体系的共有功能
}
class Cat extends Animal
{
public void eat()
{
System.out.println("吃鱼");
}
public void catchMouse()
{
System.out.println("抓老鼠");
}
}
class Dog extends Animal
{
public void eat()
{
System.out.println("吃骨头");
}
public void kanjia()
{
System.out.println("看家");
}
}
class Pig extends Animal
{
public void eat()
{
System.out.println("吃饲料");
}
public void gongdi()
{
System.out.println("拱地");
}
} |
|