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

createh54周前 (02-01)技术教程18

我们为什么要使用类?在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基础知识,诸佬们都还记得嘛(学习,复习,面试均可)

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

Java:Java中的多重继承问题(java中实现多重继承的方式)

  继承是面向对象编程 (OOP) 语言(如 Java)的主要功能之一。它是一种以增强软件设计中类重用能力的方式组织类的基本技术。多重继承是众多继承类型中的一种,是继承机制的一个重要原则。本文探讨了一...

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

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

一文讲透父子类中静态变量,成员变量初始化顺序原理

推荐:从面试到入职到离职,我在B站工作的30天时光 爱了爱了,Alibaba顶级MySQL调优手册到手,加薪妥了 爱了爱了,Spring Cloud Alibaba内部微服务架构笔记真的太牛了 本文主...

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

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

产品设计阶段:To B软件产品设计流程总结

到了产品设计阶段,大部分产品经理(尤其是技术转型的产品经理)终于可以大大的喘一口气了,这个阶段的工作应该是产品人最最熟悉的环节了。网上关于产品设计(我总觉得这个叫需求分析)的方法论还真是多的很,场景分...