本文解释了Java的继承如何在超类和子类之间建立“is-a”关系,允许子类继承和自定义超类功能。通过使用多态性,子类可以定义独特的行为,从而允许代码重用和面向对象编程的灵活性。
在Java中,继承中超类(父类)和子类(子类或派生类)之间的关系是一种is-a关系,这意味着子类是继承功能的超类的特殊版本(限制可以被应用)的派生类(CSU Global,n.d)。换句话说,如果类B继承自类A,那么类B“是类A的一个”类型。这种关系允许类B使用类A提供的所有功能(可以应用限制),同时还添加自己的功能特定功能或/和通过覆盖类 A 的部分或全部功能。子类覆盖功能的能力是多态性的一种形式。
“多态性的字典定义是指生物学中的一种原理,其中一个有机体或物种可以有许多不同的形式或阶段。这一原则也适用于面向对象的编程和 Java 语言等语言。类的子类可以定义自己独特的行为,但又共享父类的一些相同功能”(The Java™ Tutorials,n.d.)这在处理来自共享公共超类类型的不同子类的多个对象时特别有用。
例如:狗、猫、猫头鹰都是动物:
超级类
public class Animal { public void makeSound() { System.out.println("Makes a Sound"); } }
动物子类
public class Domesticated extends Animal { public void friendly() { System.out.println("This animal is friendly."); } }
驯化子类
public class Undomesticated extends Animal { public void notFriendly() { System.out.println("This animal is not friendly."); } }
驯化子类
public class Cat extends Domesticated { @Override public void makeSound() { System.out.println("Meow"); } }
未驯化的子类
public class Owl extends Undomesticated { @Override public void makeSound() { System.out.println("Hoots"); } }
输出结果的主类
public class inheritanceExample { public static void main(String[] args) { Dog myDog = new Dog(); Cat myCat = new Cat(); Owl redOwl = new Owl(); System.out.println("MY Dog:"); myDog.makeSound(); // Outputs: Bark myDog.friendly(); // Outputs: This animal is friendly. System.out.println(); System.out.println("My Cat:"); myCat.makeSound(); // Outputs: Meow myCat.friendly(); // Outputs: This animal is friendly. System.out.println(); System.out.println("Red Owl:"); redOwl.makeSound(); // Outputs: Hoot redOwl.notFriendly(); // Outputs: This animal is not friendly. } }
注意:Dog 和 Cat 类中的 makeSound() 方法会覆盖 Animal 类中的 makeSound() 方法。
此外,Dog 类是 Domesticated 类的子类,Domesticated 类是 Animal 类的子类。
“→”的孩子
在 Java 中,一个子类只能有一个超类,例如 Dog 类不能有超类 Domesticated 和超类 Animal,以下情况是不允许的。
换句话说,一个子类只能有一个超类,……并且它们不允许有多个父母、祖父母或曾祖父母。
总而言之,Java的继承允许子类利用和扩展超类的功能,体现“is-a”关系并促进多态性。通过在子类中启用特定行为,同时在公共超类中保持共享特征,可以增强代码的可重用性、灵活性和一致性。
参考资料:
CUS Global(日期不详)。模块 1:使用继承 [互动讲座]。科罗拉多州立大学全球分校,CSC372:编程 II,计算机科学系。帆布。 2024 年 6 月 8 日检索自 https://csuglobal.instruct.com/courses/94948/pages/module-1-overview?module_item_id=4868813
Java™ 教程(日期不详)。学习 Java 语言:接口和继承。甲骨文。 2024 年 6 月 8 日检索自 https://docs.oracle.com/javase/tutorial/java/IandI/polymorphism.html
最初发表于 Alex.omegapy on Medium,由 Level UP Coding 于 2024 年 11 月 1 日发布。
以上是Java 中的继承和多态性:使用超类和子类的详细内容。更多信息请关注PHP中文网其他相关文章!