WPS宏(JSA)教程——类的扩展与继承

createh54个月前 (02-01)技术教程50

我们为什么要使用类?在JSA前面我们也讲过对象的创建不一定需要使用类:class calssName{}这样的语法结构,也可以使用其他形式。今天我们将来探讨这个问题。


为什么要使用类?

类是面向对象的基础,是所有面向对象编程语言的核心内容。而我们JSA也是一种面向对象的编程语言。

我们在讲到类的定义的时候,说到类是一创建某内对象的一个模板。这将使得我们在创建对象的时候少写很多代码。有人会说,我们前面所学的原型对象类型也可以做到如此啊。

事实上,在JSA的底层设计中,它们的本质是一样的。

为了做到代码重复利用,通常还会有要将原有类型扩展一下的需求。这种需求如果采用原型对象类型来实现,将会要写很多代码。因此类就应运而生了。子类是可以获得父类的所有属性的。同时子类还可以与父类不相同。

一个类只能扩展自一个父类,而一个父类则可以有很多个子类。

类的扩展与继承

继承是类的关键属性,这意味着一个对象可以“借用”另一个对象的大部分行为,同时覆盖或增强某些部分的逻辑。这会给子类带来子类并不需要的属性和方法。从而导致子类实例的属性变得臃肿、难以维护。

因此倾向于另外一种形式——派生类,派生类可以访问其父类的所有公有属性。在JSA中扩展是通过extends指明本类是扩展自哪一个类。

需要注意:

1、在构造器中,我们调用父类。在子类访问 this 之前,必须先调用 super()。

2、super() 调用父类的构造函数来初始化 this——super() 之前也可以有代码,但你不能在 super() 之前访问 this。在派生类中,可以通过super来访问父类的方法。

3、在父类完成对 this 的修改后,派生类才可以对其进行自己的逻辑。

4、派生类可以覆盖父类的方法、属性。

5、派生类也会继承父类的静态方法也会继承,故而也可以覆盖或增强这些静态方法

6、派生类的实例同时也是父类的实例。

示例,我们引用上一节内容:

//定义一个动物类,这个类目前就三个属性:性别,生日,名字
class Animal{
  constructor(gendar,birthDay,name){
    this.gendar = gendar;
    this.birthDay = birthDay;
    this.name = name;
  }
}
//狗类,派生类自动物类,通过super来调用其父类中的构造函数
class Dog extends Animal{
  constructor(gendar,birthDay,name){
    super(gendar,birthDay,name);
  }
}
//猫类,派生类自动物类,通过super来调用其父类中的构造函数
class Cat extends Animal{
  constructor(gendar,birthDay,name){
    super(gendar,birthDay,name);
  }
}
//上面两个狗和猫的类就是由动物类派生出来的,能继承动物类的所有方法和属性。

//当我们要实例化一只狗的时候:
WangCai = new Dog('male','2023-7-2','旺财');
//我们再实例化一只猫
Garfield = new Cat('male','1977-7-2','加菲猫');

console.log(Garfield.name);//加菲猫
console.log(WangCai.name);//旺财

好了,以上是关于类的最后一部分内容。


关注我,持续共同学习,一起踏上wps宏(JSA)的登山之路。

相关文章

你知道子类引用为什么不能指向父类对象吗?反汇编一起看看

在java、C++等面向对象的语言中,实现多态的方式就是使用父类引用指向子类对象,所以父类引用指向子类对象是没有任何问题的,但是,大家有没有想过,子类引用可以指向父类对象吗?答案是不可以!但是为什么呢...

这些Java基础知识,诸佬们都还记得嘛(学习,复习,面试均可)

方法重载和方法重写的区别方法重写重写体现在继承关系上。 在Java中,子类继承父类,子类就会具备父类所以的特征,以及父类的方法和变量比如动物类有“叫”的方法,小狗小猫分别继承了动物类,重写方法时就可以...

父类实现了Serializable,子类不需要实现Serializable

相关注意事项 a)序列化时,只对对象的状态进行保存,而不管对象的方法; b)当一个父类实现序列化,子类自动实现序列化,不需要显式实现Serializable接口; c)当一个对象的实例变量引用其他对象...

三石说:java基础 类与对象(java的类和对象怎么理解)

类:类是封装对象的行为和属性的载体,具有相同属行和行为的一类实体。类中包含方法和属性。类中的构造方法:1.构造方法没有返回值2.名称与类名相同,在构造方法中可以为成员变量赋值,也就是初始化成员变量,若...

自学Java6(保姆级教学)——基本数据类型的转换

在上一期的文章中,我们认识了Java的几种运算符,先来简单回顾一下Java共有几类运算符:1.算数运算符:+,-,*,/(加减乘除),加上一个%(取余)2.赋值运算符:=3.关系运算符:˃,˂,==,...

深度分析:理解Java中的多态机制,一篇直接帮你掌握

Java中的多态1 多态是什么多态(Polymorphism)按字面的意思就是“多种状态”。在面向对象语言中,接口的多种不同的实现方式即为多态。用白话来说,就是多个对象调用同一个方法,得到不同的结果。...