事物进入程序中以对象的形式存在
对象中的属性和方法是事物的特征和行为(数据和功能
ts中的类
定义类 对象中主要包含两个部分 属性 方法
对象的constructor inherit super 个人认为 都是对象从一个普通到特征的过程
class Person {
//定义属性 (实例属性)
//直接定义的属性是实例属性 需要通过对象的实例去访问 实例.属性
//使用static开头的属性是静态属性 可以直接访问 类.属性
//readonly 只读属性 卸载static后面成为静态的只读属性
namne:string='孙悟空';
age:number=18;
//静态方法和静态属性相似 可以直接通过类去调用
sayHello(){
console.log('大家好')
}
}
const per = new Person()
(function(){
class Animal{
name:string;
constructor(name:string){
this.name=name
};
sayHello(){
console.log('jiao');
}
}
class Dog extends Animal {
// 在类的方法中super就表示当前类的父类
sayHello() {
super.sayHello();
}
}
const dog = new Dog('旺财')
dog.sayHello(); // 这个打印出来是jiao
})()
(function(){
//定义一个表示狗的类
class Dog {
name:string;
age:number;
constructor(name:string,age:number){
this.name=name;
this.age=age
}
sayHello(){
console.log('wangwangwang');
}
}
class Cat {
name:string;
age:number;
constructor(name:string,age:number){
this.name=name;
this.age=age
}
sayHello(){
console.log('miaomiaomiao');
}
}
const dog =new Dog('旺财',2)
const cat =new Cat('咪咪',3)
console.log(dog);
dog.sayHello()
console.log(cat);
cat.sayHello()
// 重复性操作太高 利用类的继承定义一个狗的类
class Animal {
name:string;
age:number;
constructor(name:string,age:number) {
this.name=name;
this.age=age
}
sayHello(){
console.log('jiao');
}
}
// 使monkey类继承animal类
// animal被称为父类 monkey被称为子类
// 继承之后 子类会拥有父类所有的方法和属性
// 生成实例对象的话直接const new就可以
class Monkey extends Animal {
eat(){ //在父类的基础上增加一些特有的方法 子类覆盖掉父类被叫做重写
console.log('bnana');
}
}
// 使mouse类继承animal类
class Mouse extends Animal {
}
})()
class Dog {
//名字和年龄已经被确定了 并不是声明一个dog类 相当于声明一个旺财类
// 类 应该是模糊的 公共的特点
// name='旺财';
// age =3;
name:string
age:number
//constructor被称为构造函数 构造函数会在对象创建时候调用
constructor(name:string,age:number){
// 在实例方法中 this表示当前的实例
// 在构造函数中当前对象就是当前新建的那个对象
// 可以通过this向新建的对象中添加属性
console.log(this);
this.name=name;
this.age=age;
}
bark(){
console.log('叫');
console.log(this);
//在方法中可以通过this来表示当前调用方法的实例 对象
}
}
// 当new一个实例的时候 相当于调用dog中的constantor方法
const dog1 =new Dog('小黑',10);
const dog2 =new Dog('小白',20);