1. 封装,继承,多态

封装

  1. 封装可以隐藏实现细节,使得代码模块化

extends继承

  1. 继承可以扩展已存在的代码模块(类)

沿用es6语法

  1. class Person{
  2. name:string;
  3. age:number;
  4. constructor(name:string,age:number){
  5. this.name = name;
  6. this.age = age;
  7. }
  8. sayName() {
  9. console.log(this.name);
  10. }
  11. }
  12. // class Student{
  13. // name:string;
  14. // age:number;
  15. // skill:string;
  16. // constructor(name:string,age:number,skill:string){
  17. // this.name = name;
  18. // this.age = age;
  19. // this.skill = skill;
  20. // }
  21. // saySkill():void{
  22. // console.log(this.skill);
  23. // }
  24. // }
  25. //extends子类会继承类的属性和方法
  26. class Student extends Person{
  27. skill:string;
  28. constructor(name,age,skill){
  29. // super 指父类只能放在子类构造方法中的第一行
  30. super(name,age);
  31. this.skill = skill;
  32. }
  33. saySkill():void{
  34. console.log(this.skill);
  35. }
  36. }
  1. new 一个实例
  2. var s:Student = new Student("lisi",18,"vue");
  3. console.log(s);

image.png

多态

  1. 根据传入的对象动态调用
  2. 同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果,这就是多态性。
  3. 简单的说:就是用基类的引用指向子类的对象。
  4. 多态除了代码的复用性外,还可以解决项目中紧偶合的问题,提高程序的可扩展性
  1. 作用
  2. 1. 应用程序不必为每一个派生类编写功能调用,只需要对抽象基类进行处理即可。大大提高程序的可复用性。//继承
  3. 2. 派生类的功能可以被基类的方法或引用变量所调用,这叫向后兼容,可以提高可扩充性和可维护性。 //多态的真正作用,
  1. interface Animal{
  2. eat():void;
  3. }
  4. class Cat implements Animal{
  5. eat(): void {
  6. console.log("鱼");
  7. }
  8. }
  9. class Dog implements Animal{
  10. eat(): void {
  11. console.log("骨头");
  12. }
  13. }
  14. class Farmer{
  15. feed(obj:Animal){
  16. obj.eat();
  17. }
  18. }
  19. var f:Farmer = new Farmer();
  20. f.feed(new Cat());//鱼
  21. f.feed(new Dog());//骨头