首页 > 其他分享 >TypeScript学习笔记-06 类、构造器、继承、super

TypeScript学习笔记-06 类、构造器、继承、super

时间:2022-11-27 15:56:30浏览次数:38  
标签:TypeScript 06 name age sayHello console 父类 super log

// 使用类来定义一个类
class Person {

    // readonly 开头的表示只读的属性,无法进行修改
    // 定义实例属性
    readonly name: string = '索隆';

    // 静态属性加上static关键字,使用类.静态属性,跟java有点类型
    static readonly age: number = 18;

    constructor() {

    }

    sayHello() {
        console.log('Hello 大家好');

    }

}

const person = new Person();

console.log(person.name, Person.age);

// 只读属性之后就没法修改了
// person.name = '路飞'

console.log(person.name);

person.sayHello();

/* 
    感觉就跟java的类有点类似,关键字static readonly,但是好像没有java里面的作用域
*/

类的构造器的学习

class Dog {
    name: string;
    age: number;

    bar() {
        // this当前对象
        alert(this.name + '哐哐哐')
    }

    // 构造函数
    // 构造函数 this当前对象就当前新建的对象
    constructor(name: string, age: number) {
        this.name = name;
        this.age = age;
    }

}

const dog1 = new Dog('旺财', 3);
const dog2 = new Dog('小黑', 2);
const dog3 = new Dog('小黄', 1);
const dog4 = new Dog('Rocket', 2);
console.log(dog1);
console.log(dog2);
console.log(dog3);
console.log(dog4);

dog1.bar();

dog2.bar();

继承,以及方法重写

(function () {

    // 定义一个Animal类

    class Animal {
        name: string;
        age: number;

        constructor(name: string, age: number) {
            this.name = name;
            this.age = age;
        }

        sayHello() {
            console.log('动物在叫');
        }
    }

    class Dog extends Animal {

        sayHello() {
            console.log('汪汪汪');
        }

        run() {
            console.log(this.name + '在跑');

        }
    }

    class Cat extends Animal {
        // 重写父类方法
        sayHello() {
            console.log('喵喵喵');
        }
    }

    const dog = new Dog('旺财', 3);
    console.log(dog);

    const cat = new Cat('喵喵', 1);
    console.log(cat);

    dog.sayHello();
    dog.run();
    cat.sayHello();


})();

有关super的代码,子类构造引入父类

(function () {
    class Animal {

        name: string

        constructor(name: string) {
            this.name = name;
        }

        sayHello() {
            console.log('动物在叫');

        }
    }

    class Dog extends Animal {

        age: number

        constructor(name: string, age: number) {
            // 子类中写了构造函数,那么父类的就不会进行执行,但是这样的会丢失属性
            // 我们必须对父类的构造函数进行调用,并且子类的参数也要写上与父类同样的属性
            super(name);
            this.age = age;
        }

        sayHello(): void {
            // super表示当前类的父类,所以这时候就是在调用父类的sayHello,和java中的类似
            // super.sayHello();
            console.log('汪汪汪');

        }
    }

    const dog = new Dog('旺财', 3);
    dog.sayHello();


})()

抽象类、抽象方法

(function () {
    // abstract抽象类,抽象类不能创建对象
    // 抽象类就是专门给别人继承的
    // 抽象类中可以添加抽象方法
    abstract class Animal {

        name: string

        constructor(name: string) {
            this.name = name;
        }

        // 父类抽象方法
        abstract sayHello(): void;
    }

    class Dog extends Animal {



        constructor(name: string) {
            // 子类中写了构造函数,那么父类的就不会进行执行,但是这样的会丢失属性
            // 我们必须对父类的构造函数进行调用,并且子类的参数也要写上与父类同样的属性
            super(name);

        }

        sayHello(): void {
            // super表示当前类的父类,所以这时候就是在调用父类的sayHello,和java中的类似
            // super.sayHello();
            console.log('汪汪汪');

        }
    }

    // 继承抽象类必须实现抽象方法
    class Cat extends Animal {


        sayHello(): void {
            console.log('喵喵喵');
        }

    }

    const dog = new Dog('旺财');
    dog.sayHello();

    const an = new Animal('蛇')

})()

 

标签:TypeScript,06,name,age,sayHello,console,父类,super,log
From: https://www.cnblogs.com/hg-blogs/p/16929825.html

相关文章

  • 06 样本及抽样分布 | 概率论与数理统计
    1.随机样本1.总体与个体总体:研究对象的全体,即试验的全部可能观察值称为总体个体:总体当中的每个对象,总体中的每个可能观察值成为个体容量:总体中所包含的个体的个数称......
  • 060 MITSUBISHI SERVO
    1.,......
  • TypeScript泛型
    泛型(Generic)定义一个函数或类时,有些情况下无法确定其中要使用的具体类型(返回值、参数、属性的类型不能确定),此时泛型便能够发挥作用。示例:/**在定义函数或是类时,如......
  • TypeScript属性的封装
    封装对象实质上就是属性和方法的容器,它的主要作用就是存储属性和方法,这就是所谓的封装默认情况下,对象的属性是可以任意的修改的,为了确保数据的安全性,在TS中可以对属......
  • TypeScript接口
    接口(Interface)接口的作用类似于抽象类,不同点在于接口中的所有方法和属性都是没有实值的,换句话说接口中的所有方法都是抽象方法。接口主要负责定义一个类的结构,接口可以去......
  • TypeScript抽象类
    抽象类(abstractclass)抽象类是专门用来被其他类所继承的类,它只能被其他类所继承不能用来创建实例使用abstract开头的方法叫做抽象方法,抽象方法没有方法体只能定义......
  • 06-面向对象_继承
    typora-root-url:images一、简介1.1、问题引入​ 在现实生活中,继承一般指的是子女继承父辈的财产。在程序中,继承描述的是事物之间的所属关系,通过继承可以使多种事物......
  • TypeScript之super
     示例ts文件:(function(){classAnimal{name:string;constructor(name:string){this.name=name;}sa......
  • TypeScript继承
    继承  * -使用继承后,子类将会拥有父类所有的方法和属性  * -通过继承可以将多个类中共有的代码写在一个父类中,  *   这样只需要写一次即可......
  • jquery006-点赞
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Title</title><style>.click{color:darkred;positio......