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;
  }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值