首页 > Java > java教程 > Java 中的继承和多态性:使用超类和子类

Java 中的继承和多态性:使用超类和子类

Linda Hamilton
发布: 2025-01-06 10:31:46
原创
879 人浏览过

本文解释了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 类的子类。

“→”的孩子
Inheritance and Polymorphism in Java: Using Superclasses and Subclasses

在 Java 中,一个子类只能有一个超类,例如 Dog 类不能有超类 Domesticated 和超类 Animal,以下情况是不允许的。
Inheritance and Polymorphism in Java: Using Superclasses and Subclasses

换句话说,一个子类只能有一个超类,……并且它们不允许有多个父母、祖父母或曾祖父母。
Inheritance and Polymorphism in Java: Using Superclasses and Subclasses

总而言之,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中文网其他相关文章!

来源:dev.to
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板