TypeScript-类和接口
  TEZNKK3IfmPf 2023年11月13日 41 0

 

  • 只要实现的某一个接口, 那么就必须实现接口中所有的属性和方法

 

错误示例:

TypeScript-类和接口

interface PersonInterface {
name: string;

say(): void;
}

class Person implements PersonInterface {
name: string = 'BNTang';
}

let p = new Person();
p.say();

正确示例:

interface PersonInterface {
name: string;

say(): void;
}

class Person implements PersonInterface {
name: string = 'BNTang';

say(): void {
console.log(`我的名字叫:${this.name}`);
}
}

let p = new Person();
p.say();

接口继承类

定义一个 ​​Person​​ 类如下:

class Person {
name: string = 'BNTang';
age: number = 18;

say(): void {
console.log(`name = ${this.name}, age = ${this.age}`);
}
}
  • 只要一个接口继承了某个类, 那么就会继承这个类中所有的属性和方法
  • 但是只会继承属性和方法的​​声明​​​, 不会继承属性和方法的​​实现​
class Person {
name: string = 'BNTang';
age: number = 18;

say(): void {
console.log(`name = ${this.name}, age = ${this.age}`);
}
}

interface PersonInterface extends Person {
gender: string;
}

class Student implements PersonInterface {
gender: string = 'male';
name: string = 'zs';
age: number = 18;

say(): void {
console.log(`name = ${this.name}, age = ${this.age}, gender = ${this.gender}`);
}
}

let stu = new Student();
stu.say();
  • 如果接口继承的类中包含了​​protected​​​ 的属性和方法, 那么就只有这个类的​​子类​​ 才能实现这个接口

 

  • 包含​​protected​​ 属性的情况

 

错误示例:

TypeScript-类和接口

class Person {
protected name: string = 'BNTang';
age: number = 18;

say(): void {
console.log(`name = ${this.name}, age = ${this.age}`);
}
}

interface PersonInterface extends Person {
gender: string;
}

class Student implements PersonInterface {
gender: string = 'male';
name: string = 'zs';
age: number = 18;

say(): void {
console.log(`name = ${this.name}, age = ${this.age}, gender = ${this.gender}`);
}
}

let stu = new Student();
stu.say();

正确示例:

class Person {
protected name: string = 'BNTang';
age: number = 18;

say(): void {
console.log(`name = ${this.name}, age = ${this.age}`);
}
}

interface PersonInterface extends Person {
gender: string;
}

class Student extends Person implements PersonInterface {
gender: string = 'male';
name: string = 'zs';
age: number = 18;

say(): void {
console.log(`name = ${this.name}, age = ${this.age}, gender = ${this.gender}`);
}
}

let stu = new Student();
stu.say();

 

  • 包含​​protected​​ 方法的情况

 

错误示例:

TypeScript-类和接口

class Person {
name: string = 'BNTang';
age: number = 18;

protected say(): void {
console.log(`name = ${this.name}, age = ${this.age}`);
}
}

interface PersonInterface extends Person {
gender: string;
}

class Student implements PersonInterface {
gender: string = 'male';
name: string = 'zs';
age: number = 18;

say(): void {
console.log(`name = ${this.name}, age = ${this.age}, gender = ${this.gender}`);
}
}

let stu = new Student();
stu.say();

正确示例:

class Person {
name: string = 'BNTang';
age: number = 18;

protected say(): void {
console.log(`name = ${this.name}, age = ${this.age}`);
}
}

interface PersonInterface extends Person {
gender: string;
}

class Student extends Person implements PersonInterface {
gender: string = 'male';
name: string = 'zs';
age: number = 18;

say(): void {
console.log(`name = ${this.name}, age = ${this.age}, gender = ${this.gender}`);
}
}

let stu = new Student();
stu.say();
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月13日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   21天前   25   0   0 接口
  TEZNKK3IfmPf   2024年04月19日   36   0   0 typescript数组编译器
TEZNKK3IfmPf