接口:规定类必须具有的功能
interface A {
// 接口没有构造函数
num1: number
// 接口中的方法不能有方法体,必须写上返回值类型
a1(): void;
}
// 接口不能被实例化(访问不了)
// let a:A=new A()
// 实现类implements :必须有接口中的属性,必须重写接口中的方法
class B implements A {
num1: number;
a1(): void {
console.log('重写的接口的函数');
}
constructor(num1: number) {
this.num1 = num1
}
}
let bb: B = new B(1)
bb.a1()
interface Usb {
in(): void
outs(): void
}
class Fs implements Usb {
type: string
ts() {
console.log('调节风扇速度');
}
constructor(type: string) {
this.type = type
}
in(): void {
console.log('风扇插入Usb');
}
outs(): void {
console.log('风扇拔出Usb');
}
}
let fss: Fs = new Fs('海尔')
fss.in()
fss.ts()
fss.outs()
// 类型 滚动
class Sb implements Usb {
type: string
constructor(type: string) {
this.type = type
}
run() {
console.log('鼠标滚动');
}
in(): void {
console.log('鼠标插入Usb');
}
outs(): void {
console.log('鼠标拔出Usb');
}
}
let sb: Sb = new Sb('有线')
sb.in()
sb.run()
sb.outs()
// 容量 写数据 读数据
class Up implements Usb {
rl: string
constructor(rl: string) {
this.rl = rl
}
write() {
console.log('写数据');
}
read() {
console.log('读数据');
}
in(): void {
console.log('U盘插入Usb');
}
outs(): void {
console.log('U盘拔出Usb');
}
}
let up: Up = new Up('300G')
up.in()
up.write()
up.read()
up.outs()
class Door {
openDoor() {
console.log('开门');
}
closeDoor() {
console.log('关门');
}
}
interface Locks {
openLock(): void
closeLock(): void
}
interface Ring {
playRing(): void
}
class LockDoor extends Door implements Locks, Ring {
openLock(): void {
console.log('开锁');
}
closeLock(): void {
console.log('上锁');
}
playRing(): void {
console.log('铃响了......');
}
}
let lc: LockDoor = new LockDoor()
lc.openLock()
lc.openDoor()
lc.playRing()
lc.closeDoor()
lc.closeLock()
练习:
普通手机 型号 品牌 打电话 发短信
智能手机 播放音乐 视频 上网 拍照
1.普通手机+音乐
2.智能手机
class Ptel {
type: string
pp: string
constructor(type: string, pp: string) {
this.type = type
this.pp = pp
}
call(): void {
console.log('打电话');
}
send(): void {
console.log('发短信');
}
info(){
console.log(`${this.pp}品牌的${this.type}的手机`);
}
}
interface Music {
music(sing:string):void
}
interface Vidio{
vidio(vidio:string):void
}
interface Wife{
wife(net:string):void
}
interface Photo{
photo():void
}
// 普通手机
class Oneph extends Ptel implements Music{
constructor(type: string, pp: string){
super(type,pp)
}
music(sing:string): void {
console.log(`播放音乐:${sing}`);
}
}
let ph1:Oneph=new Oneph('A2','oppo')
ph1.info()
ph1.call()
ph1.send()
ph1.music('My heat')
class Twoph extends Ptel implements Music,Vidio,Wife,Photo{
music(sing:string): void {
console.log(`播放音乐:${sing}`);
}
vidio(vidio:string): void {
console.log(`视频:${vidio}`);
}
wife(net:string): void {
console.log(`上网;${net}`);
}
photo(): void {
console.log('拍照');
}
}
let ph2:Twoph=new Twoph('Y30','vivo')
ph2.info()
ph2.call()
ph2.send()
ph2.music('love')
ph2.photo()
ph2.vidio('宠物')
ph2.wife('inter')
练习2:
计算机 品牌 型号
cpu 品牌,主频 介绍
硬盘 容量 介绍
内存 容量 介绍
//组装电脑
class Com{
Combrand:string
Comtype:string
constructor(Combrand:string,Comtype:string){
this.Combrand=Combrand
this.Comtype=Comtype
}
info(){
console.log(`这是${this.Combrand}品牌${this.Comtype}型号的电脑,系统如下:`);
}
}
interface Cpu{
Cpubrand(brand:string):void
Cpuzp(zp:string):void
// Cpuinfo(info:string):void
}
interface Yp{
Yprl(zp:string):void
// Ypinfo(info:string):void
}
interface Nc{
Ncrl(rl:string):void
// Ncinfo(info:string):void
}
class Comput extends Com implements Cpu,Yp,Nc{
constructor(Combrand:string,Comtype:string){
super(Combrand,Comtype)
}
Cpubrand(brand: string): void {
console.log(`Cpu的品牌是:${brand}`);
}
Cpuzp(zp: string): void {
console.log(`Cpu的主频是:${zp}`);
}
```
Yprl(rl: string): void {
console.log(`硬盘的容量是:${rl}`);
}
Ncrl(rl: string): void {
console.log(`内存的存储量是:${rl}`);
}
```
}
let com:Comput=new Comput('华为','i9')
com.info()
com.Cpubrand('Intel')
com.Cpuzp('3.8GHz')
com.Yprl('3000GB')
com.Ncrl('12GB')