TS基础2(类)-学习笔记

男娘i 2022-10-19 11:29 233阅读 0赞

文章目录

    • TS基础2(类)-学习笔记
      • class类
      • 类的继承
      • 修饰符
      • 类的类型、实现接口

TS基础2(类)-学习笔记

class类

  1. //类 class
  2. //首字母大写
  3. //类(Class):定义了一件事物的抽象特点,包含它的属性和方法
  4. class A { //定义类,名称为A
  5. }
  6. //ES5
  7. function Person(name,age){
  8. this.name = name;
  9. this.age = age;
  10. };
  11. Person.prototype.toString = function(){
  12. return this.name
  13. };
  14. var p = new Person('abc',20);
  15. p.name;
  16. p.toString()
  17. //ES6
  18. //一个类必须有constructor
  19. //class A{} === class A{constructor(){}}
  20. class Person2{
  21. name:string; //提前定义值类型
  22. age:number;
  23. constructor(name,age){
  24. this.name = name;
  25. this.age = age;
  26. }
  27. toString(){
  28. return this.name
  29. }
  30. };
  31. var p2 = new Person2('abc',20);

类的继承

  1. //类的继承
  2. //动物类
  3. class Animal {
  4. name:string;
  5. constructor(name){
  6. this.name = name;
  7. }
  8. eat(){
  9. return '吃肉'
  10. }
  11. }
  12. //继承
  13. class Dog extends Animal {
  14. constructor(name){
  15. super(name);
  16. }
  17. say(){
  18. return this.name+' '+ this.eat() //调用父类的属性和方法
  19. }
  20. }
  21. var d = new Dog('abc'); //实例化
  22. d.say();
  23. //static 静态方法 修饰符 不需要实例化 可以直接通过类来调用
  24. class Animal2 {
  25. static url: string = 'abc';
  26. static eat(){ //添加修饰符
  27. return '吃肉'
  28. }
  29. eat2(){ //添加修饰符
  30. return '吃肉'
  31. }
  32. };
  33. // var e1 = new Animal2();
  34. // e1.eat() //error
  35. //Animal2.eat(); //不需要实例化
  36. Animal2.url
  37. //Animal2.eat2();

修饰符

  1. // 修饰符
  2. // public 修饰的属性或方法是公有的,可以在任何地方被访问到,默认所有的属性和方法都是 public 的
  3. // private 修饰的属性或方法是私有的,不能在声明它的类的外部访问
  4. // protected 修饰的属性或方法是受保护的,它和 private 类似,区别是它在子类中也是允许被访问的
  5. class A2 {
  6. name:string;
  7. public constructor(name){
  8. this.name = name;
  9. }
  10. //public static url: string = 'abc';
  11. public eat(){ //添加修饰符
  12. return '吃肉'
  13. }
  14. public eat2(){ //添加修饰符
  15. return '吃肉'
  16. }
  17. }
  18. //private 修饰的属性或方法是私有的,不能在声明它的类的外部访问
  19. class A3 {
  20. private eat(){ //无法访问
  21. return '吃肉'
  22. }
  23. public eat2(){ //添加修饰符
  24. return '吃肉123'
  25. }
  26. }
  27. var a3 = new A3();
  28. a3.eat() //访问报错 但不影响正常编译
  29. a3.eat2() //正常访问
  30. //protected 修饰的属性或方法是受保护的,它和 private 类似,区别是它在子类中也是允许被访问的
  31. class A4 {
  32. protected eat(){ //无法访问 子类中也是允许被访问的
  33. return '吃肉'
  34. }
  35. private eat3(){ //无法访问 子类也不能访问
  36. return '吃肉'
  37. }
  38. public eat2(){ //添加修饰符
  39. return '吃肉'
  40. }
  41. }
  42. class D4 extends A4 {
  43. constructor(){
  44. super();
  45. }
  46. fun() {
  47. return this.eat() //子类的内部是可以访问的
  48. }
  49. fun3() {
  50. return this.eat3() //子类也不能访问
  51. }
  52. }
  53. var a4 = new A4();
  54. var d4 = new D4();

类的类型、实现接口

  1. //类的类型
  2. class A6 {
  3. name:string;
  4. constructor(name:string){
  5. this.name = name;
  6. }
  7. eat():string { //添加修饰符
  8. return '吃肉'
  9. }
  10. eat2(n:string):number{ //添加修饰符
  11. return 111
  12. }
  13. }
  14. //类实现接口
  15. //接口
  16. interface Obj {
  17. name:string;
  18. action():string;
  19. }
  20. //类实现接口 implements实现
  21. class A8 implements Obj {
  22. name:string;
  23. constructor(name){
  24. this.name = name;
  25. }
  26. action(){
  27. return '1111'
  28. }
  29. action2(){
  30. return 111
  31. }
  32. }
  33. //demo
  34. //定义门 公共类
  35. class Door{
  36. }
  37. //定义防火门 门的子类
  38. class sDoor extends Door implements Alarm{
  39. sing(){
  40. }
  41. }
  42. //报警功能 接口
  43. interface Alarm {
  44. sing();
  45. }
  46. interface Light{ //灯的接口
  47. lightOn();
  48. lightOff();
  49. }
  50. //车 类
  51. class Car implements Alarm,Light{
  52. sing(){ }
  53. lightOn(){ }
  54. lightOff(){ }
  55. }

发表评论

表情:
评论列表 (有 0 条评论,233人围观)

还没有评论,来说两句吧...

相关阅读

    相关 TS学习笔记(五):泛型

    泛型是指定一个表示类型的变量,用它来代替某个实际的类型用于编程,而后通过实际调用时传入或推导的类型来对其进行替换,以达到一段使用泛型程序可以实际适应不同类型的目的。为了实现泛型