如何理解面向对象多态

面向对象三大特征,继承,封装,多态,如何理解多态呢,大二学子

  1. 多态是指,子类可以替换父类
  2. 保持子类的开放性和灵活性,可以重写父类中的方法
  3. 实现面向接口编程
class Animal {
    public name: string;
    protected age: number;
    private weight: number;
    constructor(name: string, age: number, weight: number) {
        this.name = name;
        this.age = age;
        this.weight = weight;
    }
    speak() {
        throw new Error('此方法必须由子类实现!');
    }
}
class Person extends Animal {
    private money: number;
    constructor(name: string, age: number, weight: number, money: number) {
        super(name, age, weight);
        this.money = money;
    }
    getName() {
        console.log(this.name);
    }
    getAge() {
        console.log(this.age);
    }
    getMoney() {
        console.log(this.money);
    }
    speak() {
        console.log('你好!');
    }

}
class Dog extends Animal {
    constructor(name: string, age: number, weight: number) {
        super(name, age, weight);
    }
    speak() {
        console.log('汪汪汪!');
    }
}
let p = new Person('fullstack', 10, 10, 10);
p.speak();
let d = new Dog('fullstack', 10, 10);
d.speak();

 

 

 

多态的概念

       多态性是指允许不同类的对象对同一消息作出响应,多态性包括参数化多态性和包含多态性,多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。

前提:

(1)要有继承关系
(2)子类要重写父类的方法
(3)父类的引用指向子类的对象(向上转型:子类自动转换为父类)

实质:父类引用指向子类对象

 

2.多态的使用

格式:

父类名称 对象名 = new 子类名称();

或者

 接口名称 对象名 = new 实现类名称();

 

您的问题已经有小伙伴解答了,请点击【采纳】按钮,采纳帮您提供解决思路的答案,给回答的人一些鼓励哦~~

ps:开通问答VIP,享受5次/月 有问必答服务,了解详情↓↓↓

【电脑端】戳>>>  https://vip.csdn.net/askvip?utm_source=1146287632
【APP 】  戳>>>  https://mall.csdn.net/item/52471?utm_source=1146287632