源码
ts
// //新建一个父类
// class People{
// name:string;
// age:number;
// print(){
// return this.name + ":" + this.age;
// }
// }
// //新建一个扩展自 People 的子类
// class Teacher extends People{
// school:string;
// print(){
// return this.name + ":" this.age + ":" + this.school;
// }
// }
//可以看到在上面的代码中并没有看到访问修饰符
//什么是访问修饰符:public (公开的) private (私有的)
//事实上如果什么都不写的情况下它默认的是 public 也就意味着他是公共的大家都可以用,下面用代码演示
//新建一个父类
class People{
//public 是默认的加与不加效果是一样的
public name:string;
//下面测试私有的属性
//这样写了之后编译时控制台会报错 下面的错误
//Functions.ts(42,15): error TS2341: Property 'name' is private and only accessibl
// e within class 'People'.
// Functions.ts(51,3): error TS2341: Property 'name' is private and only accessible
// within class 'People'.
//所以连编译都是通过不了的,这个就是公有与私有的区别,公有的可以访问到而私有的是无法进行访问的
// private name:string;
//这里新增一个构造方法
//这里如果将参数增加 private 例如 private name:string 下面也是会出现访问不到的问题的
constructor(name:string,age:number){
this.name = name;
this.age = age;
}
age:number;
print(){
return this.name + ":" + this.age;
}
}
//新建一个扩展自 People 的子类
class Teacher extends People{
school:string;
//这里也新增一个构造方法
constructor(school:string){
super('xiaochuan',22);
this.school = school;
}
print(){
return this.name + ":" + this.age + ":" + this.school;
}
}
// //使用 Teacher 这个子类
// var t = new Teacher();
// // alert(t.print());//这个时候因为未定义具体的值所以输出的是 undefined:undefined:undefined
// //定义相应的属性值 再输出
// t.name = 'xiaochuan';
// t.age = 22;
// t.school = '北京大学';
// alert(t.print());//'xiaochuan:22:北京大学'
//由于在创建类的时候新增了构造方法,所以上面的使用类以及输出也需要做出想应的改变
var t = new Teacher('北京大学');
alert(t.print());//'xiaochuan:22:北京大学'
HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>TypeScript 函数-访问修饰符 public (公开的) private (私有的)</title>
</head>
<body>
<script type="text/javascript" src="Functions.js"></script>
</body>
</html>
浏览器输出效果,下面是使用
public
时的效果,在使用private
时编译都是无法通过的