java:继承、超类和子类

面向对象编程中的一个重要概念是继承。它为对象定义彼此之间的关系提供了一种方法。顾名思义,一个对象能够从另一个对象继承特征。...

面向对象编程中的一个重要概念是继承。它为对象定义彼此之间的关系提供了一种方法。顾名思义,一个对象能够从另一个对象继承特征。

Coworkers discussing data on computer

更具体地说,对象能够将其状态和行为传递给其子对象。要使继承起作用,对象之间需要有共同的特征。

在Java中,类可以从其他类中获取,也可以从其他类中获取,以此类推。这是因为它们可以从上面的类继承特征,一直到最顶层的对象类。

java继承的一个例子

假设我们制作了一个名为Human的类,它代表了我们的身体特征。它是一个泛型类,可以代表你、我或世界上的任何人。它的状态记录着腿的数量、手臂的数量和血型。它有吃、睡、走等行为。

人类有助于全面了解是什么让我们都一样,但它不能告诉我性别差异。为此,我们需要创建两个新的类类型,称为“男”和“女”。这两个类的状态和行为将在许多方面彼此不同,除了它们从人类继承的那些。

因此,继承允许我们将父类的状态和行为包含到其子类中。然后,子类可以扩展状态和行为,以反映它所表示的差异。这个概念最重要的一点是要记住,子类是父类的一个更专门的版本。

什么是超类?

在两个对象之间的关系中,超类是为从中继承的类指定的名称。它听起来像一个超级复制程序类,但请记住,它是更通用的版本。更好的名称可能是基类,也可能只是父类。

这次举一个更真实的例子,我们可以有一个名为Person的超类。该州拥有该人的姓名、地址、身高和体重,并有购物、铺床和看电视等行为。

我们可以创建两个新类,它们继承自名为Student和Worker的人。它们是更专业的版本,因为尽管它们有名字、地址、看电视和购物,但它们也有彼此不同的特点。

工人可以拥有一个拥有职称和工作地点的州,而学生可以拥有一个学习领域和学习机构的数据。

超类示例:

假设您定义了一个Person类:

public class Person { }

可以通过扩展此类来创建新类:

public class Employee extends Person { }

Person类被称为Employee类的超类。

什么是子类?

在两个对象之间的关系中,子类是从超类继承的类的名称。虽然它听起来有点单调,但请记住它是超类的一个更专业的版本。

在前面的示例中,Student和Worker是子类。

子类也可以称为派生类、子类或扩展类。

我可以有多少子类?

您可以有任意多个子类。一个超类可以有多少子类是没有限制的。同样,继承级别的数量也没有限制。类的层次结构可以建立在特定的公共领域上。

事实上,如果您查看JavaAPI库,您将看到许多继承的示例。API中的每个类都继承自一个名为java.lang.Object的类。例如,无论何时使用JFrame对象,您都处于一长串继承的末尾:

java.lang.Object extended by java.awt.Component extended by java.awt.Container extended by java.awt.Window extended by java.awt.Frame extended by javax.swing.JFrame

在Java中,当子类从超类继承时,它被称为“扩展”超类。

我的子类可以继承许多超类吗?

不可以。在Java中,一个子类只能扩展一个超类。

为什么要使用继承?

继承允许程序员重用他们已经编写的代码。在Human类示例中,我们不需要在Man和Woman类中创建新字段来保存血型,因为我们可以使用从Human类继承的字段。

使用继承的另一个好处是,它允许我们将子类视为超类。例如,假设一个程序创建了多个男女对象实例。程序可能需要调用所有这些对象的睡眠行为。因为睡眠行为是人类超类的行为,所以我们可以将所有的男性和女性对象组合在一起,并将它们视为人类对象。

  • 发表于 2021-09-12 23:38
  • 阅读 ( 196 )
  • 分类:IT

你可能感兴趣的文章

这(this)和超级java(super in java)的区别

...用对象建模。对象使用类是贪得无厌的。OOP的一个支柱是继承。它提供了代码的可重用性。已经存在的类是超类,派生类是子类。super关键字可用于引用超类的对象。系统中有多个对象。“this”关键字用于引用当前对象。this和su...

  • 发布于 2020-10-19 18:17
  • 阅读 ( 379 )

超类(superclass)和子类(subclass)的区别

...通信。一个程序或软件可以使用面向对象的编程来开发。继承是OOP中的一个主要概念。它提高了代码的可重用性。它不需要从一开始就实现一个程序,而是允许将已经存在的类的属性和方法继承到一个新类中。这有助于使程序更...

  • 发布于 2020-10-19 19:56
  • 阅读 ( 700 )

多态性(polymorphism)和oop中的继承(inheritance in oop)的区别

关键区别——oop中的多态与继承 面向对象程序设计(OOP)是软件开发中常用的方法。许多编程语言支持面向对象编程。面向对象编程是一种使用类和对象设计程序的方法。OOP中的类是创建对象的蓝图。类具有属性和方法。对...

  • 发布于 2020-10-19 21:16
  • 阅读 ( 547 )

超载(overloading)和在java中重写(overriding in java)的区别

...数必须相同。 主题 类中发生重载。 重写发生在具有继承关系的两个类中。 同义词 重载称为编译时间多态性。 重写称为运行时多态性。 总结 - 超载(overloading) vs. 在java中重写(overriding in java) 多态性是面向对象编程中的...

  • 发布于 2020-10-19 21:20
  • 阅读 ( 362 )

继承(inheritance)和java接口(interface in java)的区别

继承(inheritance)和java接口(interface in java)的区别 Java是Sun Microsystems公司开发的一种编程语言。Java可以用来开发各种应用程序。它是一种支持面向对象、结构化等多种范式的语言,Java的主要优点是支持面向对象编程(OOP)。程序...

  • 发布于 2020-10-25 00:02
  • 阅读 ( 491 )

建造师(constructor)和方法(method)的区别

...容之前声明,尽管方法可以是空的。 构造函数和方法的继承 构造函数不是子类继承的,因为它们不是类的成员。但是,可以从子类调用超类(父类)的构造函数。另一方面,方法由子类继承以提供代码的可重用性。 构造函数和...

  • 发布于 2021-06-25 08:37
  • 阅读 ( 428 )

继承(inheritance)和java中的多态性(polymorphism in java)的区别

Java中继承性和多态性的主要区别在于继承允许类使用已经存在的类的属性和方法,而多态性允许对象以多种方式运行。 面向对象编程(OOP)是软件开发中的一种常见编程范式。它有助于使用对象对现实世界场景进行建模。Java是...

  • 发布于 2021-07-01 09:50
  • 阅读 ( 420 )

延伸(extends)和java实现(implements in java)的区别

...景进行建模,从而创建解决方案。OOP中的两个主要概念是继承和抽象。extends和implements是与这两种范式相关联的关键字。 覆盖的关键领域 1.什么是extends–定义,功能2.什么是implements–定义,功能3.extends和implements在Java中的区别是...

  • 发布于 2021-07-01 13:02
  • 阅读 ( 273 )

基类(base class)和C++中派生类(derived class in c++)的区别

...派生类的主要区别在于基类是已经存在的类,而派生类是继承基类的属性和方法的类。 C++是贝尔实验室Bjarne Stroustrup开发的一种高级通用编程语言。它是C语言的超集。程序员可以使用C++实现面向对象编程(OOP)概念。OOP有助于...

  • 发布于 2021-07-01 14:50
  • 阅读 ( 736 )

继承(inheritance)和作文(composition)的区别

继承和组合的主要区别在于继承允许在新类中使用现有类的属性和方法,而composite是一种特殊类型的聚合,它描述了关联对象之间的所有权。 面向对象编程(OOP)是软件开发中使用的一种主要范式。它允许程序员使用一组对象...

  • 发布于 2021-07-01 18:11
  • 阅读 ( 542 )
三百裡
三百裡

0 篇文章

相关推荐