JavaOOP学习笔记08:多态

一、多态的概念

多态是面向对象编程的三大特性之一(即封装、继承、多态),指同一行为具有多种表现形式。具体表现为:父类引用指向子类对象,调用方法时根据实际对象类型决定执行哪个方法。

二、多态的实现条件

1、继承关系:必须存在父类和子类的继承关系。

2、方法重写:子类需重写父类的方法。

3、向上转型:父类引用指向子类对象,例如:

Test01 test01= new Test01(); // Test是父类,Test01是子类
Test test=test01; 

三、多态的表现形式

1、编译时类型与运行时类型不同,编译时类型由声明决定(如Test),运行时类型由实际对象决定(如Test01)。

2、方法调用动态绑定,在调用重写方法时,系统会根据运行时类型决定执行哪个方法。

四、注意事项

1、无法调用子类特有方法,父类引用只能调用父类中定义的方法,如果需调用子类特有方法,需强制向下转型。例如:

if (animal instanceof Cat) {
    Cat cat = (Cat) animal;
    cat.specificMethod();
}

注:instanceof关键字用于判断animal变量引用的是否为Cat类的对象。

2、成员变量无多态,多态仅针对方法,成员变量的访问由编译时的类型决定。

六、代码示例

class Animal {
    public void makeSound() {
        System.out.println("山里有很多动物的叫声");
    }
}

class Dog extends Animal {
    @Override
    public void makeSound() {
        System.out.println("芝士狗叫");
    }
}

class Cat extends Animal {
    @Override
    public void makeSound() {
        System.out.println("芝士猫叫");
    }
}

public class PolymorphismDemo {
    public static void main(String[] args) {
        Animal myAnimal = new Animal();  // Animal对象
        Animal myDog = new Dog();       // Dog对象向上转型为Animal
        Animal myCat = new Cat();       // Cat对象向上转型为Animal

        myAnimal.makeSound();  // 输出: 山里有很多动物的叫声
        myDog.makeSound();     // 输出: 芝士狗叫
        myCat.makeSound();     // 输出: 芝士猫叫
    }
}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值