一、ts中定义类
class Person{
name:string; //属性 前面省略了public关键词
constructor(n:string){ //构造函数 实例化类的时候触发的方法
this.name=n;
}
run():void{
alert(this.name);
}
}
var p=new Person('张三');
p.run()
二、ts中实现继承 extends super
class Person{
name:string;
constructor(name:string){
this.name=name;
}
run():string{
return `${this.name}在运动`
}
}
// var p=new Person('王五');
// alert(p.run())
class Web extends Person{
constructor(name:string){
super(name); /*初始化父类的构造函数*/
}
}
var w=new Web('李四');
alert(w.run()); //李四在运动
class Person{
name:string;
constructor(name:string){
this.name=name;
}
run():string{
return `${this.name}在运动`
}
}
// var p=new Person('王五');
// alert(p.run())
class Web extends Person{
constructor(name:string){
super(name); /*初始化父类的构造函数*/
}
run():string{
return `${this.name}在运动-子类`
}
work(){
alert(`${this.name}在工作`)
}
}
var w=new Web('李四');
alert(w.run()); //首先会先去调用子类的方法,子类没有再去找父类 输出:李四在运动-子类
三、类里面的修饰符
public :公有 在当前类里面、 子类 、类外面都可以访问
protected:保护类型 在当前类里面、子类里面可以访问 ,在类外部没法访问
private :私有 在当前类里面可以访问,子类、类外部都没法访问
属性如果不加修饰符 默认就是 公有 (public)
(1)public
class Person{
public name:string; /*公有属性*/
constructor(name:string){
this.name=name;
}
run():string{
return `${this.name}在运动`
}
}
var p=new Person('王五');
alert(p.run()) //可以访问类里面
class Web extends Person{
constructor(name:string){
super(name); /*初始化父类的构造函数*/
}
run():string{
return `${this.name}在运动-子类`
}
work(){
alert(`${this.name}在工作`)
}
}
var w=new Web('李四');
w.work(); // 子类也可以访问
当然类外部访问公有属性也是可以的
class Person{
public name:string; /*公有属性*/
constructor(name:string){
this.name=name;
}
run():string{
return `${this.name}在运动`
}
}
var p=new Person('哈哈哈');
alert(p.name); 类外部访问属性
(2) protected
class Person{
protected name:string; /*公有属性*/
constructor(name:string){
this.name=name;
}
run():string{
return `${this.name}在运动`
}
}
var p=new Person('王五');
alert(p.run()) //可以访问到
class Web extends Person{
constructor(name:string){
super(name); /*初始化父类的构造函数*/
}
work(){
alert(`${this.name}在工作`)
}
}
var w=new Web('李四11');
w.work();
alert( w.run()); //可以访问到
类外外部没法访问保护类型的属性
(3) private
class Person{
private name:string; /*私有*/
constructor(name:string){
this.name=name;
}
run():string{
return `${this.name}在运动`
}
}
var p=new Person('王五');
alert(p.run()) //可以访问类里面的
alert(p.name) //不可以通过类外部访问属性
class Web extends Person{
constructor(name:string){
super(name)
}
work(){
console.log(`${this.name}在工作`)
}
}
var w=new Web('李四11');
alert( w.run()); // 子类不可以访问