第一节: 什么是对象
程序中所有的操作都需要通过对象来完成,对现实事物的一个抽象,以一系列的属性与方法的集合。比如,人,手机。
第二节:定义class
class Person{
name:string = "张三";
static age:number = 19;//静态属性
readonly height:number = 163;//只读属性无法修改
say(){
console.log("会说话..");
}
}
构造函数:
class Person{
realname:string;//定义类型
age:number;
//构造函数中赋值
constructor(realname:string,age:number){
this.realname = realname;
this.age = age;
}
}
第三节:extends继承
子类继承父类的属性与方法。
第四节:super继承
在类的方法中,就是表示当前类的父类。子类调用父类的构造函数,必须写super调用父类的函数,因为重写了父类的函数,父类的函数就无法调用需要用super调用父类的构造函数
第五节:抽象类
定义:abstract 开头的类为抽象类 不能用来创建对象,专门用来继承的类。
抽象类声明的抽象方法,子类必须要实现父类的抽象方法。
(function(){
abstract class Person{
realname:string;
age:number;
constructor(realname:string,age:number){
this.realname = realname;
this.age = age;
}
abstract say():void;
}
class ChinaPerson extends Person{
constructor(realname:string,age:number){
super(realname,age);
}
say(){
console.log("说普通话");
}
}
const P1 = new ChinaPerson("张三",19);
})();
第六节:接口
定义:接口用来定义一个类中 应该包含哪些属性和方法。
接口定义的属性都没有值,接口定义的方法都是抽象方法。
接口是对类的属性和方法的一个限制。
(function(){
interface myinterface{
name:string,
age:number,
}
const obj:myinterface={
name:"张三",
age:19
}
console.log(obj);
})();
用 implements 实现接口。
(function(){
interface myinterface{
name:string;
say():void;
}
class Person implements myinterface{
name:string;
constructor(name:string){
this.name = name;
}
say(){
console.log("123");
}
}
})();
第七节:属性的封装
Public:公共的,修饰的属性可以在任意位置修改。
Private:私有的,只能在类的内部使用。可以用get和set。
Protected:受保护的属性,只能在当前类和子类中访问。
class Person {
realname: string;
private age: number;
protected height:number;
constructor(realname: string, age: number,height:number) {
this.realname = realname;
this.age = age;
this.height = height;
}
say( ){
return this.age = 30
}
getAge( ){
return this.age = 40
}
}
class Fans extends Person{
constructor(realname:string,age:number,height:number){
super(realname,age,height);
}
changeAge(){
return this.height = 60;
}
}
const fan = new Fans('Ljy',24,170);
console.log(fan.changeAge());