面向对象三大特征,继承,封装,多态,如何理解多态呢,大二学子
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