继承是什么,Java继承详解
在 Java 中,继承是面向对象编程中重要的组成部分,几乎是所有面向对象语言中不可缺少的部分。
在面向对象的软件开发过程中,继承能够有效地实现代码的复用,大大缩短程序开发的周期,提高软件的可扩展性和可维护性。
熟练掌握继承,是学习面向对象的重要环节。

图 1 类的继承
通过继承的方式,子类不仅可以自动拥有父类的属性和方法,还能扩展新的属性和方法,达到代码重用,以及提高软件结构层次的目的。
如下图所示,结合动物分类图,读者可以进一步理解继承的概念和意义。

图 2 动物分类图
驯鹿和麋鹿都属于鹿科动物,水牛和黄牛属于牛科动物,而鹿科动物和牛科动物都属于动物。无论是哪类动物,都具有动物的共同属性,因此,这些动物之间会形成一种继承体系。
从分类学上来看,采用这种分类及分层的树状继承结构可以有效地进行管理和研究。
例如,人可以从事多种职业,如司机、图书馆管理员和地铁售票员等,但无论是司机、图书馆管理员,还是地铁售票员,都应该符合人的共性。因此,可以先构建一个人具有的共性类,再分别构建司机、图书馆管理员和地铁售票员的类,让这 3 个类都继承人的共性类,这样每个类就无须重复定义人的共性的代码。实际上,Java 中继承的本质也是通过模拟这种现实生活中继承的概念来实现的。
下面通过实例来介绍子类是如何继承父类的:
在 Java 中,一个类只能有一个父类,这种特点称为单重继承。
例如,这里定义一个父类 Dog,一个继承 Dog 类的沙皮狗类 Sharpei,并在 Sharpei 类中定义一个自己的方法 cute(),代码如下列实例所示:
在面向对象的软件开发过程中,继承能够有效地实现代码的复用,大大缩短程序开发的周期,提高软件的可扩展性和可维护性。
熟练掌握继承,是学习面向对象的重要环节。
子类与父类
在 Java 程序设计中,类的继承是基于已存在的一个类构建一个新的类的机制。新类吸收已有类的属性和方法,并且能在此基础上扩展新的属性和方法。将现有的类称为父类或超类,构建的新类称为子类,如下图所示。
图 1 类的继承
通过继承的方式,子类不仅可以自动拥有父类的属性和方法,还能扩展新的属性和方法,达到代码重用,以及提高软件结构层次的目的。
如下图所示,结合动物分类图,读者可以进一步理解继承的概念和意义。

图 2 动物分类图
驯鹿和麋鹿都属于鹿科动物,水牛和黄牛属于牛科动物,而鹿科动物和牛科动物都属于动物。无论是哪类动物,都具有动物的共同属性,因此,这些动物之间会形成一种继承体系。
从分类学上来看,采用这种分类及分层的树状继承结构可以有效地进行管理和研究。
例如,人可以从事多种职业,如司机、图书馆管理员和地铁售票员等,但无论是司机、图书馆管理员,还是地铁售票员,都应该符合人的共性。因此,可以先构建一个人具有的共性类,再分别构建司机、图书馆管理员和地铁售票员的类,让这 3 个类都继承人的共性类,这样每个类就无须重复定义人的共性的代码。实际上,Java 中继承的本质也是通过模拟这种现实生活中继承的概念来实现的。
子类的继承性
在 Java 程序中,通过关键字 extends 来声明一个类是从另一个类继承而来的,一般语法格式如下:
class 子类 extends 父类{
... // 程序代码,子类的属性和方法
}
下面通过实例来介绍子类是如何继承父类的:
class Person {
String name;
int age;
String gender;
// Person类的其他实现...
}
class Student extends Person {
int height;
Student(String name, int height) {
this.name = name;
this.height = height;
// 假设年龄是20,性别是"男"
this.age = 20;
this.gender = "男";
}
// Student类的其他实现...
}
class Driver extends Person {
double salary;
Driver(String name, double salary) {
this.name = name;
this.salary = salary;
// 假设年龄是30,性别是"男"
this.age = 30;
this.gender = "男";
}
// Driver类的其他实现...
}
public class Test {
public static void main(String[] args) {
Student s = new Student("高同学", 168);
Driver t = new Driver("李师傅", 6000);
System.out.println(s.name + "身高为:" + s.height);
System.out.println(t.name + "工资为:" + t.salary);
}
}
运行结果为:
高同学身高为:168
李师傅工资为:6000.0
在 Java 中,一个类只能有一个父类,这种特点称为单重继承。
子类与对象
子类除了可以继承父类的属性和方法,还可以定义自己的属性和方法。例如,这里定义一个父类 Dog,一个继承 Dog 类的沙皮狗类 Sharpei,并在 Sharpei 类中定义一个自己的方法 cute(),代码如下列实例所示:
class Dog {
// 定义name属性
public String name;
// 定义一个公共的叫的方式
public void shout() {
System.out.println("动物发出的叫声!");
}
}
class Sharpei extends Dog {
// 在子类中扩充一个cute()方法
public void cute() {
System.out.println("我会摇尾巴!");
}
}
public class Test {
// 在main()方法中验证子类对象对父类的属性和方法的调用
public static void main(String[] args) {
// 实例化子类对象
Sharpei s = new Sharpei();
s.name = "wangcai";
s.shout(); // 调用继承自父类的方法
s.cute(); // 调用子类特有的方法
}
}
运行结果为:
动物发出的叫声!
我会摇尾巴!
ICP备案:
公安联网备案: