封装,继承,多态
封装
封装可以隐藏实现细节,使得代码模块化
extends继承
继承可以扩展已存在的代码模块(类)
沿用es6语法
class Person{name:string;age:number;constructor(name:string,age:number){this.name = name;this.age = age;}sayName() {console.log(this.name);}}// class Student{// name:string;// age:number;// skill:string;// constructor(name:string,age:number,skill:string){// this.name = name;// this.age = age;// this.skill = skill;// }// saySkill():void{// console.log(this.skill);// }// }//extends子类会继承类的属性和方法class Student extends Person{skill:string;constructor(name,age,skill){// super 指父类只能放在子类构造方法中的第一行super(name,age);this.skill = skill;}saySkill():void{console.log(this.skill);}}
new 一个实例var s:Student = new Student("lisi",18,"vue");console.log(s);
多态
根据传入的对象动态调用同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果,这就是多态性。简单的说:就是用基类的引用指向子类的对象。多态除了代码的复用性外,还可以解决项目中紧偶合的问题,提高程序的可扩展性
作用1. 应用程序不必为每一个派生类编写功能调用,只需要对抽象基类进行处理即可。大大提高程序的可复用性。//继承2. 派生类的功能可以被基类的方法或引用变量所调用,这叫向后兼容,可以提高可扩充性和可维护性。 //多态的真正作用,
interface Animal{eat():void;}class Cat implements Animal{eat(): void {console.log("鱼");}}class Dog implements Animal{eat(): void {console.log("骨头");}}class Farmer{feed(obj:Animal){obj.eat();}}var f:Farmer = new Farmer();f.feed(new Cat());//鱼f.feed(new Dog());//骨头
