类
class 类名{
//属性
属性名:类型; //ts中必须给属性添加数据类型
...
//构造方法
constructor(形式参数名:类型){ //必须用构造函数给属性初始化值
//构造方法的作用
//1.初始化参数
//2.创建对象
this.属性 = 参数; //this:当前这个类本身
}
//普通方法
方法名(参数列表...){
}
}
new 类名(实际参数) //实参传参类型必须对应构造函数
类的继承
class Car{
lunzi:number;
name:string;
color:string;
speed:number;
constructor(lunzi:number,name:string,color:string,speed:number){
this.lunzi=lunzi;
this.name=name;
this.color=color;
this.speed=speed;
}
run(){
console.log(this.name+"有"+this.lunzi+"个轮子,以"+this.speed+'km/h的速度,在高速公路上行驶')
}
}
class Bike extends Car{ //Bike类继承Car类
}
class Tuolaji extends Car{ //拖拉机类继承Car类
bing:string;
liantiao:string;
constructor(lunzi:number,name:string,color:string,speed:number,bing:string,liantiao:string,){
super(lunzi,name,color,speed); //注意super关键字
this.bing=bing; //1,必须写在子类的构造方法的首行,
this.liantiao=liantiao; //2,调用父类的构造方法进行属性初始化
//3,super.属性名; 调用父类的属性
//4,super.方法名; 调用父类的方法
}
run(){
console.log('拖拉机在高速公路上行驶') //方法重写:当父类的方法不满足子类的需求的时候重新写过
} //注意:父类和子类的同名方法:除了方法体不同之外,其他都必须一样(方法名,参数个数,类型,返回值)
}
let car=new Car(4,"福特野马","黑色",120);
car.run();
let bike=new Bike(2,"捷安特","红黑色",10);
bike.run();
let tuolaji=new Tuolaji(3,"红旗牌","红色",60,"手摇柄","链条");
tuolaji.run();
子类会继承父类的属性和方法(包括构造方法),(父类私有的属性和方法不能被继承)
继承可以多层次继承,不能多继承(你只能有一个父亲)
继承的关键字:extends
修饰符
-
public----公共的,谁都可以访问,不声明修饰符默认为public
-
protected----受保护的,访问:本类以及子类
(这个相当于自己的儿子孙子后代,都能使用被protected修饰的方法和属性)
class Person {
protected name: string;
constructor(name: string) {
this.name = name; }
}
class Employee extends Person {
private department: string;
constructor(name: string, department: string) {
super(name)
this.department = department;
}
public getElevatorPitch() {
return `你好, 我的名字是 ${this.name} 我的儿子是 ${this.department}.`;
}
}
let howard = new Employee("海思", "麒麟");
console.log(howard.getElevatorPitch());
console.log(howard.name);//错误
- private ----私有的 表示只有自己(本类)可以使用,也不可以继承
1, 私有的属性和方法只能在类中使用(方法被私有修饰符修饰的不多,属性被修饰的很多)
2, 给被私有的修饰要获取属性 setter和getter 存取器
private age:number;
set setAge(age:number){
this.age = age;
}
get getAge():number{
return this.age;
}
let p = new Person();
p.setAge = 16;
console.log(p.getAge );