/*
多态:
某一种事物的多种存在形态。
class 动物
{}
class 猫 extends 动物
{}
class 狗 extends 动物
{}
一个猫对象,存在了多种形态:
动物 x = new 猫();//一个对象,两种形态。
父类创建的,指向了子类的对象。
猫这类事物,既具备了猫的形态,又具备了动物的形态,
这就是对象的多态性。
简单说,就是一个对象对应着不同类型。
多态在代码中的体现:
父类或者接口的引用指向了子类的对象。
多态的好处:
提高了代码的拓展性,前期定义的代码可以使用后期的内容。
多态的弊端:
前期定义的内容不能调用后期子类的特有内容。
多态的前提:
1,必须有关系,继承,实现。
2,要有覆盖。
*/
abstract class Animal
{
abstract void eat();
}
class Dog extends Animal
{
public void eat() {
System.out.println("啃骨头");
}
}
class Cat extends Animal
{
public void eat() {
System.out.println("吃鱼");
}
public void CatchMouse() {
System.out.println("抓老鼠");
}
}
public class DuoTaiDemo {
public static void main(String[] args) {
// Cat c = new Cat();
// Dog d = new Dog();
// c.eat();
// d.eat();
// method(new Cat());
// method(new Dog());
Animal a = new Cat();//自动类型提升,猫对象提升为动物类型。
a.eat();//但是会造成猫对象的特有功能无法被访问。
//其作用就是限制对特有功能的访问。
//专业上讲:向上转型。
//如果还想使用猫的特有功能。
//可以将对象进行向下转型。
Cat c = (Cat)a;//向下转型的目的就是为了调用特有方法。
c.CatchMouse();
}
public static void method(Animal a) {
a.eat();
}
}
面向对象的第三个特征----多态I
最新推荐文章于 2021-06-23 11:56:47 发布