面向对象之多态
2021-10-15 本文已影响0人
公子请留步LookMe
1.多态的前提1:是继承
2.多态的前提2:要有方法的重写
3.父类引用指向子类对象,如:Animal a = new Cat();
解释:创建出来的子类对象的地址值,交给父类类型的引用类型变量保存
4.多态中,编译看左边,运行看右边
解释:必须要在父类定义这个方法,才能通过编译,把多态对象看作父类类型。
必须要在子类重写这个方法,才能满足多态,实际干活的是子类
package cn.tedu.oop;
/*本类用作多态的入门案例*/
public class TestDemo {
public static void main(String[] args) {
//6.创建”纯纯的“对象用于测试
Animal a = new Animal();
Cat c = new Cat();
Dog d = new Dog();
//7.调用方法进行测试
a.eat();//小动物Animal吃啥都行~
c.eat();//小猫爱吃小鱼干~执行的是重写以后的功能
d.eat();//小狗爱吃肉骨头~执行的是重写以后的功能
/*2.父类不能调用子类的特有功能*/
//a.play();
c.play();//小猫Cat跳的老高啦~,子类可以调用自己的功能
d.play();//小狗Dog跑的老快啦~,子类可以调用自己的功能
//8.创建多态对象进行测试
/*3.口诀1:父类引用指向子类对象
* 解释:创建出来的子类对象的地址值交给父类类型的引用类型变量来保存*/
Animal a2 = new Cat();
Animal a3 = new Dog();
/*4.口诀2:编译看左边 运行看右边
* 解释:必须要父类定义这个方法,才能通过编译,编译时,把多态对象看作是父类类型
* 必须要子类重写这个方法,才能满足多态,运行时实际干活的是子类*/
a2.eat();//小猫爱吃小鱼干~,多态对象可以调用重写后的方法
//a2.play();//多态对象把自己看作是父类类型,不能使用子类的特有方法
}
}
/*1.多态的前提:继承+重写*/
//1.创建父类
class Animal{
//3.提供父类的普通方法
public void eat(){
System.out.println("小动物Animal吃啥都行~");
}
}
//2.1创建子类小猫类Cat并与Animal建立继承关系
class Cat extends Animal{
//4.1添加子类重写的方法
@Override//此注解表明本方法是一个重写的方法
public void eat(){
System.out.println("小猫爱吃小鱼干~");
}
//5.1添加子类特有的功能
public void play(){
System.out.println("小猫Cat跳的老高啦~");
}
}
//2.2创建子类小狗类Dog并与Animal建立继承关系
class Dog extends Animal{
//4.2添加子类重写的方法
@Override//此注解表明本方法是一个重写的方法
public void eat(){
System.out.println("小狗爱吃肉骨头~");
}
//5.2添加子类特有的功能
public void play(){
System.out.println("小狗Dog跑的老快啦~");
}
}