5.ts Class 类 封装继承多态

面向对象编程的三大特点

  • 封装(Encapsulation):将对数据的操作细节隐藏起来,只暴露对外的接口。外界调用端不需要(也不可能)知道细节,就能通过对外提供的接口来访问该对象,
  • 继承(Inheritance):子类继承父类,子类除了拥有父类的所有特性外,还有一些更具体的特性。
  • 多态(Polymorphism):由继承而产生了相关的不同的类,对同一个方法可以有不同的响应。
class Animal {
  name: string;
  constructor(name: string) {
    this.name = name
  }
  run() {
    return `${this.name} is running`
  }
}
const snake = new Animal('lily')

console.log(snake.run())

 

// 继承的特性
class Dog extends Animal {
  bark() {
    return `${this.name} is barking`
  }
}

 

// 这里我们重写构造函数,注意在子类的构造函数中,必须使用 super 调用父类的方法,要不就会报错。
class Cat extends Animal {
 //静态数组,不需要实例化
  static categories = ['mammal']

  constructor(name) {
    super(name)
    console.log(this.name)
  }
  run() {
    return 'Meow, ' + super.run()
  }
}
const maomao = new Cat('maomao')
console.log(maomao.run())
console.log(Cat.categories)

 

  • public 修饰的属性或方法是公有的,可以在任何地方被访问到,默认所有的属性和方法都是 public 的
  • private 修饰的属性或方法是私有的,不能在声明它的类的外部访问
  • protected 修饰的属性或方法是受保护的,它和 private 类似,区别是它在子类中也是允许被访问的
// 这里我们重写构造函数,注意在子类的构造函数中,必须使用 super 调用父类的方法,要不就会报错。
class Cat extends Animal {
 //静态数组,不需要实例化
  static categories = ['mammal']

  constructor(name) {
    super(name)
    console.log(this.name)
  }
//private
  private run() {
    return 'Meow, ' + super.run()
  }
}
const maomao = new Cat('maomao')
console.log(maomao.run())
console.log(Cat.categories)
  •  
封装、继承和多态是面向对象编程(Object-Oriented Programming, OOP)三大核心特性: 1. **封装**(Encapsulation):它是将数据和操作数据的方法捆绑在一起的过程。通过将数据隐藏在私有访问修饰符(如`private`)声明的数据成员中,外部只能通过公共的getters和setters来访问,实现了数据的安全性和一致性。例如,在Java中: ```java public class BankAccount { private double balance; public void setBalance(double amount) { if (amount >= 0) { this.balance = amount; } } // Getter方法 public double getBalance() { return balance; } } ``` 2. **继承**(Inheritance):允许创建一个新(子),它从已存在的(父继承属性和方法。子可以添加新的特性和覆盖或扩展父的行为。比如: ```java public class SavingsAccount extends BankAccount { // 子特有的属性和方法 public void depositInterest() { balance += calculateInterest(); } protected double calculateInterest() { // 实现计算利息的逻辑 } } ``` 3. **多态**(Polymorphism):让同一种型的对象能够在不同上下文中表现出多种形态。这体现在方法调用上,即子对象可以被当作其父的对象来引用,调用它们共同的方法,每个子有自己的实现。例如: ```java List<Account> accounts = new ArrayList<>(); accounts.add(new SavingsAccount()); // 虽然add的是SavingsAccount对象,但是由于多态,这里可以接受BankAccount的引用 accounts.get(0).deposit(); // 会调用SavingsAccount版本的deposit方法 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值