1 -类方法

  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. getName():void{
  9. console.log(this.name);
  10. }
  11. }
  12. var p:Person = new Person("cheng",20);
  13. p.getName();
  1. class Person{
  2. /* 实例的name */
  3. name:string
  4. age:number
  5. getName():void{
  6. console.log(this.name);
  7. }
  8. }
  9. var p:Person = new Person();
  10. p.getName(); // undefined
  11. //当没有构造函数的时候,代码底层有自动补全构造函数

2- static

  1. //static修饰的变量是类所共有的,只能通过类名去调用。
  2. class Person{
  3. /* 实例的name */
  4. static skill:string = "js";
  5. name:string
  6. age:number
  7. getName():void{
  8. console.log(Person.skill)
  9. console.log(this.name);
  10. }
  11. }
  12. var p:Person = new Person();
  13. p.getName(); // js undefined

3.类的继承

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

4- 多态

  1. //根据传入的对象,动态决定调用谁的方法
  2. interface Animal{
  3. eat():void;
  4. }
  5. class Cat implements Animal{
  6. eat():void{
  7. console.log("鱼")
  8. }
  9. }
  10. class Dog implements Animal{
  11. eat():void{
  12. console.log("骨头")
  13. }
  14. }
  15. class Farmer{
  16. feed(obj:Animal){
  17. obj.eat();
  18. }
  19. }
  20. var f:Farmer = new Farmer();
  21. f.feed(new Cat());
  22. f.feed(new Dog())