Ionic3类的继承
2018-07-28 本文已影响0人
IT飞牛
先上代码,后期后时间再分析。
父类不需要在任何module中进行引入。只需要在使用的子类头部import就能使用。
父类:base.ts
import { ExxDbProvider } from './../exx-db/exx-db';
import { Injectable } from '@angular/core';
@Injectable()
export class Base {
constructor(private exxdb: ExxDbProvider, private isHideTabs: boolean = false) {
this.checkLogin();
}
protected checkLogin(): Promise<any> {
return this.exxdb.checkLogin()
}
ionViewWillEnter() {
if (this.isHideTabs) {
HideTabs();
}
}
ionViewWillLeave() {
if (this.isHideTabs) {
ShowTabs();
}
}
}
子类:gztz.ts
import { Base } from './../../../providers/base/base';
import { ExxDbProvider } from './../../../providers/exx-db/exx-db';
import { Component } from '@angular/core';
import { IonicPage, NavController, NavParams } from 'ionic-angular';
@IonicPage(
{ name: "gztz" }
)
@Component({
selector: 'page-gztz',
templateUrl: 'gztz.html',
})
export class GztzPage extends Base {
private canload: boolean = true;
private qjdata: GztzListModel = new GztzListModel();
private domain: string;
private exxmodel: any;
private jiancheng: string;
constructor(
public navCtrl: NavController,
public navParams: NavParams,
private exxDb: ExxDbProvider) {
super(exxDb, true);
// 验证登录
this.checkLogin().then(() => {
this.jiancheng = myinfo.School.jiancheng;
this.domain = myinfo.Domain;
this.doInfinite();
})
}
ionViewWillEnter() {
super.ionViewWillEnter();//调用父类中的方法
console.log("这里是子页面的 ionViewWillEnter");
}
ionViewWillLeave() {
super.ionViewWillLeave();
console.log("这里是子页面的 ionViewWillLeave");
}
}
extends
子类继承父类:
1、被private修饰的变量和方法不能被继承;
2、 被final修饰的变量和方法不能被继承;
3、 构造方法不能被继承;
其他的都可以继承,但子类用不用就是另一回事了;
子类继承抽象类:
1、如果子类是非抽象类,则必须实现抽象类中的所有“抽象方法”;
2、如果子类是抽象类,则可以不实现抽象类中的所有方法;
抽象类中可以有成员变量;
抽象类可以包含“抽象方法”和“非抽象方法”;
implements
1、如果子类是非抽象类,则必须实现接口的所有方法;
2、如果子类是抽象类,则可以不实现接口的所有方法,而由子类实现;
接口中没有成员变量;
接口的所有方法均为抽象方法;
参考资料:
https://blog.csdn.net/maomaolaoshi/article/details/78374506?locationNum=6&fps=1
https://segmentfault.com/a/1190000008976996