Java继承示例

时间:2020-02-23 14:37:10  来源:igfitidea点击:

这个例子演示了继承在Java编程语言中的用法

什么是继承

继承是允许Java类从其他类派生的OOP能力。父类称为超类,派生类称为子类。子类从它们的超类继承字段和方法。
继承是面向对象编程(OOP)背后的四个主要概念之一。OOP问题在工作面试中非常常见,因此您可能会在下一次Java工作面试中遇到关于继承的问题。
Java中的“所有类的父类”是

Object

类。Java中的每个类都继承自

Object

。在高层

Object

是所有程序中最普遍的。接近层次结构底部的类提供了更专门的行为。
Java平台中的所有类都是Object的后代(图片由Oracle提供)
Java有一个单一的继承模型,这意味着每个类只有一个直接超类。
子类继承其父类的所有公共成员和受保护成员,无论子类位于哪个包中。如果子类与其父类在同一个包中,它还继承父类的包私有成员。您可以按原样使用继承的成员、替换它们、隐藏它们或者用新成员补充它们:
继承的字段可以直接使用,就像其他字段一样。
您可以在子类中声明与超类中同名的字段,从而隐藏它(不推荐)。
可以在子类中声明不在超类中的新字段。
继承的方法可以按原样直接使用。
您可以在子类中编写一个新的实例方法,该子类与超类中的实例方法具有相同的签名,从而重写它。
您可以在子类中编写一个新的静态方法,该子类与超类中的方法具有相同的签名,从而隐藏它。
可以在子类中声明不在超类中的新方法。
您可以编写一个子类构造函数来调用超类的构造函数,可以隐式调用,也可以使用关键字调用

super

.
继承是一种强大的技术,它允许您编写干净且可维护的代码。例如,假设您有一个具有多个后继者的超类。在超类中更改几行代码要容易得多,这样做可以更改每个继承器的功能,而不是在每个子类的每一端都这样做。

Java继承示例

在下面的示例中,我们创建了3个类。超类

Point

表示二维空间中具有x和y坐标的点。

package net.theitroad;

public class Point {
	//fields marking X and Y position of the point
	public int x;
	public int y;

	//one constructor
	public Point(int x, int y) {
		super();
		this.x = x;
		this.y = y;
	}

	//getter and setter methods
	public int getX() {
		return x;
	}

	public void setX(int x) {
		this.x = x;
	}

	public int getY() {
		return y;
	}

	public void setY(int y) {
		this.y = y;
	}
}
ColoredPoint

是一个子类,它扩展了

Point

并添加一个附加字段

colorName

. 注意这是如何完成的——我们使用关键字【extends】来告诉我们要从哪个类派生

package net.theitroad;

public class ColoredPoint extends Point {

	//new field added to store the color name
	public String colorName;

	public ColoredPoint(int x, int y, String colorName) {
		super(x, y);
		this.colorName = colorName;
	}

	public String getColorName() {
		return colorName;
	}

	public void setColorName(String colorName) {
		this.colorName = colorName;
	}

}

最后是一个测试继承性的程序。首先我们创建一个新的

Point

类型

ColoredPoint

. 注意【instanceof】关键字的用法。这样我们就可以检查一个对象是否属于某种类型。一旦我们确定了点的类型

ColoredPoint

我们可以使用以下命令显式键入cast:

ColoredPoint coloredPoint = (ColoredPoint)point;

现在我们可以访问新属性colorName

package net.theitroad;

public class InheritanceExample {

	public static void main(String[] args) {
		Point point = new ColoredPoint(2, 4, "red");

		if (point instanceof ColoredPoint) {
			ColoredPoint coloredPoint = (ColoredPoint)point;
			System.out.println("the color of the point is: " + coloredPoint.getColorName());
			System.out.println("with coordinates x=" + coloredPoint.getX() + 
					" y=" + coloredPoint.getY());
		}
	}

}

运行上面的示例将产生以下输出

the color of the point is: red
with coordinates x=2 y=4