访问权限
比如:故宫,有些地方不花钱也可以观光,有些地方需要买票才能观光,有些地方是禁止一般游客进入
比如:教学管理系统,学生可以查看成绩、课表等信息;而老师可以修改学生成绩、调整学生课表
这些都是访问权限,更好的体现 封装性,也提供 访问权限
访问权限一共有四种:
- public
- protected
- private
public
由 public 修饰的方法、属性,表示 公有的,可以在任何地方使用
如果不写访问权限,默认是 public
例子
class Phone{
public name:string = ""
sn:string = "" // 不写就表示public
public call(num:string):void{
console.log("打电话给:",num)
}
}
const nokia = new Phone()
nokia.name = "李雷的手机"
nokia.sn = "123"
console.log(nokia.name)
console.log(nokia.sn)
nokia.call("110")
protected
由 protected 修饰的方法、属性,是受保护的,只能在当前类中、子类中使用
注意:不能通过对象使用
例子1
class Person {
// 定义eat() 方法,由 protected 修饰
protected eat(food:string):void {
console.log("吃",food)
}
// 定义 sleep() 方法,默认为 public
sleep():void {
console.log("睡觉")
this.eat("肉包子") // 可以在该类中调用 protected 修饰的方法
}
}
测试:
const zhangsan = new Person()
zhangsan.sleep()
// 执行报错,不能通过对象调用 protected 修饰的方法
// zhangsan.eat("红烧肉")
例子2
定义子类,继承 Person 类:
class Student extends Person {
study(lesson:string): void {
console.log("学习",lesson);
this.eat("苹果") // 可以在子类中调用父类的 protected 方法
}
}
测试代码:
const lilei = new Student()
lilei.sleep() // 可以通过对象调用父类方法
// 执行报错,不能通过对象调用protected修饰的方法
// lilei.eat("红烧肉")
lilei.study("HTML")
private
由 protected 修饰的方法、属性,只能在当前类中使用
注意:
- 不能通过对象使用
- 不能在子类中使用
例子
class Person {
// 定义eat() 方法
private eat(food:string):void {
console.log("吃",food)
}
sleep():void {
console.log("睡觉")
this.eat("肉包子") // 可以在当前类中调用 private 修饰的方法
}
}
测试:
const zhangsan = new Person()
// 执行报错,不能通过对象调用 private 修饰的方法
// zhangsan.eat("肉包子")
zhangsan.sleep()
例子2
定义子类,继承 Person 类:
class Student extends Person {
study(lesson:string): void {
console.log("学习",lesson);
// this.eat("苹果") // 不能在子类中调用父类的 private 方法
}
}
测试代码:
const lilei = new Student()
lilei.sleep()
// 执行报错,不能通过对象调用protected修饰的方法
// lilei.eat("红烧肉")
lilei.study("HTML")