一、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()); // 子類不可以訪問