typescript 类(类的定义、继承、修饰符、抽象类)
代码:
// 本节内容
// 1.类的定义
// 2.类的继承
// 3.访问修饰符
// 4.静态属性和静态方法
// 5.抽象类和多态 // js
// function Person(name) {
// this.name = name;
// this.print = function() {
// console.log(this.name)
// }
// }
// var p = new Person("aa")
// p.print() // ts 1.类的定义
class Person {
name:string;
age:number;
constructor(name:string, age:number){
this.name = name;
this.age = age;
}
print() {
return this.name + ":" + this.age
}
}
var p = new Person("张三",20)
console.log(p.print()) // 2.类的继承
class Student extends Person {
cardnumber:string;
school:string;
constructor(cardnumber:string, school:string){
super("zhangsan", 19)
this.cardnumber = cardnumber;
this.school = school
}
dohomework(){
return this.name + "今年" + this.age + "岁,就读于" + this.school + "编号" + this.cardnumber
}
}
// var stu1 = new Student("zhangsan",20)
// stu1.cardnumber = "1001"
// stu1.school = "北京大学" var stu1 = new Student("1001","北京大学")
console.log(stu1.dohomework()) // 接口的继承
interface Printer {
getmsg();
} interface ColorPrinter extends Printer {
printing();
} class HPPrinter implements ColorPrinter {
printing(){
console.log("打印成功")
}
getmsg(){
console.log("HP10011")
}
}
var hp = new HPPrinter()
hp.getmsg()
hp.printing() // 3.访问修饰符
// public / private /protected
class People {
public name:string;
private age:number;
protected email:string;
constructor(name:string,age:number,email:string){
this.name = name;
this.age = age;
this.email = email;
}
print(){
return this.name + ":" + this.age
}
} var p1 = new People("zhangsan",20,"111@qq.com")
console.log(p1.name)
// console.log(p1.age)
// console.log(p1.email)
class Teacher extends People {
show(){
console.log(this.name)
// console.log(this.age)
console.log(this.email)
}
} // 4.静态属性和静态方法
// function Boss() {
// // 实例属性
// this.name = "zhangsan";
// // 实例方法
// this.print = function(){}
// }
// // 静态属性
// Boss.age = 19
// // 静态方法
// Boss.show = function() {}
// // 调用静态方法
// Boss.show()
// // 调用静态属性
// console.log(Boss.age)
// // 调用实例方法和属性
// var boss = new Boss()
// boss.print()
// console.log(boss.name) // ts
class Boss {
// 实例属性
name:string;
age:number;
// 静态属性
static email:string;
constructor(name:string,age:number,email:string){
this.name = name;
this.age = age;
Boss.email = email;
}
// 实例方法
print(){
return this.name + ":" + this.age
}
// 静态方法
static show(){
console.log("show 方法")
}
}
// 调用静态方法
Boss.show()
// 嗲用实例方法
var boss = new Boss("zhangsan",22,'111@qq.com')
console.log(boss.print())
// 注:不依赖于类的方法,可以为静态方法 // 5.多态(同一个父类,不同的子类,有不同的实现)
class Animal {
eat() {
console.log("animal eat")
}
}
class Cat extends Animal {
eat() {
console.log("猫吃鱼")
}
}
class Dog extends Animal {
eat() {
console.log("狗吃肉")
}
}
var c = new Cat()
c.eat()
var d = new Dog()
d.eat() // 6.抽象类/抽象方法
// 6.1 抽象类是提供其他类继承的基类(父类),不能直接被实例
// 6.2 抽象方法只能包含在抽象类中,抽象类中可以包含抽象方法和非抽象方法
// 6.3 子类继承抽象类,实现抽象方法 // 定义抽象类
abstract class Beast {
// 定义抽象方法(抽象方法没有具体的方法体)
abstract eat();
run(){
console.log("run run run")
}
} class Tiger extends Beast {
eat() {
console.log("天王盖地虎")
}
} var t = new Tiger()
t.eat()
.
typescript 类(类的定义、继承、修饰符、抽象类)的更多相关文章
- C#类、方法的访问修饰符
这篇文章主要介绍了C#类的访问修饰符用法,较为详细的分析了C#类的访问修饰符概念与用法,具有一定的参考借鉴价值,需要的朋友可以参考下 本文详细分析了C#类的访问修饰符用法,分享给大家供大家参考.具体用 ...
- Java进阶(四十)Java类、变量、方法修饰符讲解
Java进阶(四十)Java类.变量.方法修饰符讲解 Java类修饰符 abstract: 将一个类声明为抽象类,没有实现的方法,需要子类提供方法实现. final: 将一个类生命为最终(即非继承类) ...
- C#中方法、类等的默认访问修饰符~
C# 方法默认访问级别 : private C# 类默认访问级别 : internal 1.命名空间下的元素的默认访问修饰符 public : 同一程序集的其他任何代码或引用该程序集的其他程序集都可以 ...
- C# 方法、类等的默认访问修饰符
C# 方法默认访问级别 : private C# 类默认访问级别 : internal 1.命名空间下的元素的默认访问修饰符 public : 同一程序集的其他任何代码或引用该程序集的其他程序集都可以 ...
- 10-04 Java 权限修饰符,类及其组成常见的修饰符
四种权限修饰符的测试 /* 权限修饰符: 本类 同一个包下(子类和无关类) 不同包下(子类) 不同包下(无关类) private Y 默认 Y Y protected Y Y Y public Y Y ...
- 修改VS类模板自动添加public修饰符和版权注释信息
在开发过程中,我们经常需要给类或接口添加public修饰符(默认没有)和一些相关的注释信息,这个工作是机械而枯燥的,而这个简单的需求其实是可以通过修改VS自带的类模板来实现的,下面是详细的修改步骤. ...
- Java 类、属性、方法修饰符 public、private、protected、default
Java 中修饰类修饰符:public .default (默认) Java 中修饰类中属性.方法修饰符:public.private.protected.default (默认) 通过 IDEA 创 ...
- typescript类 继承 修饰符
//1.ts中类的定义 /* es5: function Person(name){ this.name=name; this.run=function(){ console.log(this.nam ...
- 匿名类、包、权限修饰符_DAY10
1:内部类(理解) (1)把类定义在一个类的内部. (2)特点: A:内部类可以直接使用外部类的成员,包括私有. B:外部类要使用内部类成员,必须创建对象使用. 例子: public c ...
- 类的高级:访问修饰符、封装、静态类成员static、内部类;
访问修饰符: 公开访问(public):对所有子类,非子类访问: 受保护的(protected):只有同包子类.非子类.不同包子类可访问,不同包非子类不可访问: 私有的(private):只有本类可访 ...
随机推荐
- Django框架——进阶之AJAX
<script>$("#b1").on("click", function () { // 点击 id是b1的按钮要做的事儿 var i1 = $( ...
- Linux下安装配置启动RabbitMQ
Linux版本:Centos 7RabbitMQ依赖erlang所以需要先安装erlang以及他需要的环境 安装erlang http://www.erlang.org/downloads 拿最新的版 ...
- 使用Ant打包工具
由于使用java,javac,jar等工具进行编译打包,即繁琐低效又容易出错,因此Ant出现了.Ant的出现就是专门为了打包编译java代码的,使用之前得稍微学一下.Ant的运行起来主要是依靠配置文件 ...
- 4G漏洞
4G VoLTE漏洞:可致用户地理位置和其它个人信息泄露 2017-08-05 LBS 首先要了解下,什么是VoLTE. VoLTE为英文Voice Over LTE的缩写,直译就是音频通过LTE网络 ...
- vue typescript curd
用typescript 完成了一个页面 import { Component, Prop } from 'vue-property-decorator'; import Vue, { VNode } ...
- CDN和浏览器缓存
1,CDN 旨在解决的最重要的问题是什么,我们称之为网络延迟,通过网络获取资源总是比从本地获取慢,无论服务器是在同一个局域网中还是位于世界的另一个角落,都是如此.这里的速度差异是 IT 行业的一个核心 ...
- 小米Air安装Arch Linux之图形界面配置(Gnome 和 sway)持续更新中……
0. 前言 上一篇文章简单讲述了在小米Air上安装Arch Linux的经验,但是安装完后基本系统后,还需要额外的配置才能进到日常使用.下文简单列举一些步骤. 1. 参考网站 主要还是参考ARCH W ...
- 测试人员必备:linux文件清理不得不知道的技巧
测试人员最常见和繁琐的任务之一就是清理系统,比如防止磁盘空间出现不足.下面是我收集的一些常用的 Linux 文件系统相关命令. 一 检查可用空间 要查找服务器上所有文件系统上的可用空间,请执行以下命令 ...
- cmd 创建并写入文件
一.建立空文件的几种方法1.cd.>a.txtcd.表示改变当前目录为当前目录,即等于没改变:而且此命令不会有输出.>表示把命令输出写入到文件.后面跟着a.txt,就表示写入到a.txt. ...
- ln: /usr/bin/mysql: Operation not permitted
一.背景 前段时间装mysql,就遇到了ln: /usr/bin/mysql: Operation not permitted的错误,网上好多方法都过时了,下边是我的解决方法 执行 sudo ln - ...