【Java】类的继承

当您创建一个新的类时,如果能够重用已经存在的类,那就可以更有效地创建类了。这可以通过Java的”继承”来实现。

继承是指类的派生。

例如,当改良现成产品以制造新产品时,从零开始制作新的设计图纸是一种方法,但是通过对现成产品的设计图纸进行改良来制作新产品的设计图纸,只需进行变更和添加设计,可以高效地制作设计图纸。

对于Java类的创建也是类似的。当扩展或添加现有类的功能时,只需编写扩展或添加的部分即可创建新类。这被称为继承,继承的现有类被称为超类或父类。另一方面,新类被称为子类或派生类。

可以从一个父类创建多个子类。然而,子类不能拥有多个父类。在Java中,不能混合两个以上的设计图纸来创建新的设计图纸。这被称为“单一继承”。

继承

在类的继承中可以使用”extends”关键字。

class クラス名 extends スーパークラス名{
  インスタンス変数・メソッド
}

继承与构造函数 yǔ

尽管继承可以进行,但构造函数却不能被继承。这是因为初始化目标可能在子类中进行了添加、删除或类型发生了变化。即使在超类中存在相同的构造函数,也必须在子类中进行描述。

超级()

继承后,通过创建新的构造函数可以再次使用构造函数,但在子类中也必须编写相同内容的构造函数很麻烦,同时也会减少继承的好处。通过使用父类的构造函数来初始化继承的部分,并在子类中进行附加部分的初始化,可以在构造函数中继承共同的部分,只需在子类的构造函数中编写不同的部分将会很方便。

在Java中,可以通过使用”super”来实现。”super”调用其类的父类构造函数。无论父类的名称是什么,都必须使用”super”进行调用。请注意,并不会将实际的父类名称放入构造函数中,否则它将无法运行作为构造函数。另外,即使有参数,也可以在”super()”的括号内写入参数,以调用相应的父类构造函数。

构造函数首先执行父类的构造函数,然后再执行子类特有的处理,因此,在子类的构造函数中一定要在最开始的位置写入”super()”。另外,即使没有明确指定通过”super()”调用父类的构造函数,编译器也会自动引用父类的构造函数来创建构造函数,前提是类中没有无参数的构造函数。

再定义:覆写

由于继承,可能会继承到超类的所有属性,有时候也会继承到不必要的方法。在这种情况下,我们应该在继承的类中重新定义这些方法。这种重新定义被称为覆盖。请注意不要将其与名字相似的“重载”混淆。覆盖是将已定义的方法替换为在子类中编写的方法,之前的方法将不再被使用。

覆盖的方式与普通方法的定义没有任何区别。然而,为了避免错误地覆盖超类的方法而定义出另一个方法,我们通过在方法前加上 @Override 来明确表示该方法是要进行覆盖的。这被称为覆盖注解,可以防止覆盖的错误发生。

广告
将在 10 秒后关闭
bannerAds