1 类的定义
class Person{
name:string;
age:number;
constructor(name:string,age:number){
this.name = name;
this.age = age;
}
print(){
return this.name+":"+this.age
}
}
var p = new Person("zhangsan",20)
console.log(p.print)
2 类的继承
class Student extends Person{
cardnumber:string;
school:string;
constructor(cardnumber:string,school:string){
super("zhangsan",20)//执行父级的构造函数
this.cardnumber = cardnumber;
this.school=school
}
dohomework(){
return this.name+"今年"+this.age+"岁,就读于"+this.school+"编号"+this.cardnumber
}
}
var stu1 = new Student("10001","北京大学")
3 访问修饰符:(要明白用这个声明,什么时候可以访问,什么时候不可以访问)
(1)public/private/protected
class Person{
public name:string;
private age:number;
protected email:string;
constructor(name:string,age:number){
this.name = name;
this.age = age;
this.email = mail;
}
print(){
return this.name+":"+this.age
}
}
var p = new Person("zhangsan",20)
console.log(p.name)
console.log(p.age)
console.log(p.email)
此时只有p.name可以访问
(2)在继承中
class student extends Person {
show(){
console.log(this.name,this.age,this.email)//此时this.age不能访问
}
}
public:任何地方可以访问
private:私有的,只有自己可以访问(例如爸爸与儿子,爸爸的私房钱是私有的,儿子不可以用)
protected:自己跟子类可以访问(例如爸爸的房子,儿子也可以用)
4 静态属性和静态方法
class Person{
//实例属性
name:string;
static age:number;//静态属性
email:string;
constructor(name:string,age:number,email:string){
this.name = name;
this.age = age;
this.email = email;
}
//实例方法
print(){
return this.name+":"+this.age
}
//静态方法
static show(){
console.log("show 方法")
}
}
调用静态方法:
Person.show();
//调用实例方法
var p1 = new Person("zhangsan",22,"ss.qq.com")
console.log(p1.print())
5 多态
class Animal{
eat(){
console.log("animal eat")
}
}
class Cat extends Animal{
eat(){
console.log("猫吃鱼")
}
}
class Dog extends Animal{
eat(){
console.log("狗吃肉")
}
}
var c1 = new Cat();
c1.eat()
抽象类/抽象方法
(1)抽象类是提供其他类继承的基类(父类),不能直接被实例
(2)抽象方法只能包含在抽象类中,抽象类中可以包含抽象方法和非抽象方法
(3)子类继承抽象类,实现抽象方法
(4)定义
abstract class Animal{
abstract eat();
run (){
console.log("run run run")
}
}
class Cat extends Animal{
eat(){
console.log("猫吃鱼")
}
}
class Cat extends Animal{
eat(){
console.log("狗吃肉")
}
}
var c1 = new Cat()
c1.eat()
var d1 = new Dog()
d1.eat()