社区网站建设难点,金融直播间网站开发,网页表单制作步骤,网站建设哪个公司的好面向对象
要想面向对象#xff0c;操作对象#xff0c;首先便要拥有对象#xff1b;
要创建对象#xff0c;必须要先定义类#xff0c;所谓的类可以理解为对象的模型#xff1b;
程序中可以根据类创建指定类型的对象#xff1b;
举例来说#xff1a; 可以通过Perso…
面向对象
要想面向对象操作对象首先便要拥有对象
要创建对象必须要先定义类所谓的类可以理解为对象的模型
程序中可以根据类创建指定类型的对象
举例来说 可以通过Person类来创建人的对象通过Dog类创建狗的对象不同的类可以用来创建不同的对象 定义类
class 类名 {属性名: 类型;constructor(参数: 类型){this.属性名 参数;}方法名(){....}
}
示例 class Person{name: string;age: number;constructor(name: string, age: number){this.name name;this.age age;}sayHello(){console.log(大家好我是${this.name});}}
使用类 const p new Person(孙悟空, 18);
p.sayHello(); 构造函数
可以使用constructor定义一个构造器方法
注1在TS中只能有一个构造器方法 例如
class C{name: string;age: numberconstructor(name: string, age: number) {this.name name;this.age age;}
}
同时也可以直接将属性定义在构造函数中
class C {constructor(public name: string, public age: number) {}
}
上面两种定义方法是完全相同的
注2子类继承父类时必须调用父类的构造方法如果子类中也定义了构造方法
例如
class A {protected num: number;constructor(num: number) {this.num num;}
}
class X extends A {protected name: string;constructor(num: number, name: string) {super(num);this.name name;}
}
如果在X类中不调用super将会报错
封装
对象实质上就是属性和方法的容器它的主要作用就是存储属性和方法这就是所谓的封装
默认情况下对象的属性是可以任意的修改的为了确保数据的安全性在TS中可以对属性的权限进行设置
静态属性static声明为static的属性或方法不再属于实例而是属于类的属性
只读属性readonly如果在声明属性时添加一个readonly则属性便成了只读属性无法修改
TS中属性具有三种修饰符public默认值可以在类、子类和对象中修改protected 可以在类、子类中修改private 可以在类中修改
示例
public
class Person{public name: string; // 写或什么都不写都是publicpublic age: number;constructor(name: string, age: number){this.name name; // 可以在类中修改this.age age;}sayHello(){console.log(大家好我是${this.name});}
}
class Employee extends Person{constructor(name: string, age: number){super(name, age);this.name name; //子类中可以修改}
}
const p new Person(孙悟空, 18);
p.name 猪八戒;// 可以通过对象修改
protected
class Person{protected name: string;protected age: number;constructor(name: string, age: number){this.name name; // 可以修改this.age age;}sayHello(){console.log(大家好我是${this.name});}
}
class Employee extends Person{constructor(name: string, age: number){super(name, age);this.name name; //子类中可以修改}
}
const p new Person(孙悟空, 18);
p.name 猪八戒;// 不能修改
private
class Person{private name: string;private age: number;constructor(name: string, age: number){this.name name; // 可以修改this.age age;}sayHello(){console.log(大家好我是${this.name});}
}
class Employee extends Person{constructor(name: string, age: number){super(name, age);this.name name; //子类中不能修改}
}
const p new Person(孙悟空, 18);
p.name 猪八戒;// 不能修改
属性存取器
对于一些不希望被任意修改的属性可以将其设置为private
直接将其设置为private将导致无法再通过对象修改其中的属性
我们可以在类中定义一组读取、设置属性的方法这种对属性读取或设置的属性被称为属性的存取器
读取属性的方法叫做setter方法设置属性的方法叫做getter方法
示例
class Person{private _name: string;constructor(name: string){this._name name;}get name(){return this._name;}set name(name: string){this._name name;}
}
const p1 new Person(孙悟空);
// 实际通过调用getter方法读取name属性
console.log(p1.name);
// 实际通过调用setter方法修改name属性
p1.name 猪八戒;
静态属性
静态属性方法也称为类属性。使用静态属性无需创建实例通过类即可直接使用
静态属性方法使用static开头
示例
class Tools{static PI 3.1415926;static sum(num1: number, num2: number){return num1 num2}
}
console.log(Tools.PI);
console.log(Tools.sum(123, 456));
this
在类中使用this表示当前对象
继承
继承时面向对象中的又一个特性
通过继承可以将其他类中的属性和方法引入到当前类中
示例
class Animal{name: string;age: number;constructor(name: string, age: number){this.name name;this.age age;}
}
class Dog extends Animal{bark(){console.log(${this.name}在汪汪叫);}
}
const dog new Dog(旺财, 4);
dog.bark();
通过继承可以在不修改类的情况下完成对类的扩展
重写
发生继承时如果子类中的方法会替换掉父类中的同名方法这就称为方法的重写
示例
class Animal{name: string;age: number;constructor(name: string, age: number){this.name name;this.age age;}run(){console.log(父类中的run方法);}
}
class Dog extends Animal{bark(){console.log(${this.name}在汪汪叫);}run(){console.log(子类中的run方法会重写父类中的run方法);}
}
const dog new Dog(旺财, 4);
dog.bark();
在子类中可以使用super来完成对父类的引用
抽象类abstract class
抽象类是专门用来被其他类所继承的类它只能被其他类所继承不能用来创建实例
abstract class Animal{abstract run(): void;bark(){console.log(动物在叫~);}
}
class Dog extends Animals{run(){console.log(狗在跑~);}
}
使用abstract开头的方法叫做抽象方法抽象方法没有方法体只能定义在抽象类中继承抽象类时抽象方法必须要实现;
正片结束 最近发现了一件事情自己很少静下来去思考一些事情了。虽然说的是每天每个时候我基本都有对应的事情做但说完全没时间去停下来一二十分钟那是假的。这种匆忙的日常也让我在这几天内搞杂了几件事情也当了几次的大冤种这让我不由的回想起了第一次做项目的时候我当时最深刻的感受我们永远不要在自己所看重的事情上投入不切实际的期待附加不着边际的价值因为人生唯一确定的就是不确定的人生。做好自己分内的事情降低期待提示自己客观事实又怎么会因为人意志的改变而改变呢? 这次博客也算是让我静下来思考了一会还是希望自己在接下来的日子里能有意识无意识的多思考一些事情吧