C/C++教程

TypeScript面向对象编程(二)

本文主要是介绍TypeScript面向对象编程(二),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

面向对象的特点 封装、继承、重写

封装:相当于把属性和方法放入一个容器中,将属性和方法存储储存起来,并可以调用。 继承:通过继承可以将其他类中的属性和方法(除了私有)引入到当前类中。通过继承可以在不修改类的情况下完成对类的扩展 重写:当使用继承时,子类有和父类相同名字的方法,子类会覆盖掉父类的方法。

TS中属性具有三种修饰符:
public(默认值),可以在类、子类和对象中修改
protected ,可以在类、子类中修改
private ,可以在类中修改 只读属性(readonly): 如果在声明属性时添加一个readonly,则属性便成了只读属性无法修改。

对于一些不希望被任意修改的属性,可以将其设置为private,直接将其设置为private将导致无法再通过对象修改其中的属性。我们可以在类中定义一组读取、设置属性的方法,这种对属性读取或设置的属性被称为属性的存取器,读取属性的方法叫做getter方法,设置属性的方法叫做setter方法。

示例:

class Person{
    private _name: string;

    constructor(name: string){
        this._name = name;
    }

    get name(){
        return this._name;
    }

    set name(name: string){
        this._name = name;
    }

}

const p1 = new Person('大白')
console.log(p1.name); // 通过getter读取name属性
p1.name = '小白' // 通过setter修改name属性

抽象类(abstract class)
抽象类是专门用来被其他类所继承的类,它只能被其他类所继承不能用来创建实例.
使用abstract开头的方法叫做抽象方法,抽象方法没有方法体只能定义在抽象类中,继承抽象类时抽象方法必须要实现

  abstract class Person{
          abstract nameChild(): void;
          Modify(){
              console.log('林立');
          }
      }
      
      class A extends Person{
         nameChild(){
              console.log('林理');
          }
      }
     

接口(Interface)
接口的作用类似于抽象类,不同点在于接口中的所有方法和属性都是没有实值的,换句话说接口中的所有方法都是抽象方法。接口主要负责定义一个类的结构,接口可以去限制一个对象的接口,对象只有包含接口中定义的所有属性和方法时才能匹配接口。同时,可以让一个类去实现接口,实现接口时类中要保护接口中的所有属性。

泛型(Generic)
定义一个函数或类时,有些情况下无法确定其中要使用的具体类型(返回值、参数、属性的类型不能确定),此时泛型便能够发挥作用。
例子:

function test(arg: any): any{
	return arg;
}

使用泛型:

  function test<T>(arg: T): T{
    	return arg;
    }

T是我们给这个类型起的名字(不一定非叫T),设置泛型后即可在函数中使用T来表示该类型。所以泛型其实很好理解,就表示某个类型。

可以同时指定多个泛型,泛型间使用逗号隔开:

function test<T, K>(a: T, b: K): K{
      return b;
  }
这篇关于TypeScript面向对象编程(二)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!