一文搞懂Java面向对象编程中的继承机制
本文详细阐述Java面向对象编程的关键特性:继承。
Java是一种面向对象的编程语言,即它是围绕对象的概念设计的。以下是Java面向对象编程系统的一个关键特性:
1 继承
继承是Java面向对象编程系统的一个关键特性,它允许一个类从另一个类中继承属性和方法。这样可以实现代码复用并简化代码维护。本文将详细阐述Java中的继承概念。
2 继承的基础知识
在Java中,使用extends关键字实现继承。当一个类从另一个类继承时,它继承父类的所有非私有成员,包括字段,方法和嵌套类。
以下是一个简单的类层次结构示例:
class Vehicle {
protected int speed;
public void setSpeed(int speed) {
this.speed = speed;
}
public void start() {
System.out.println("Starting vehicle...");
}
}
class Car extends Vehicle {
private String model;
public Car(String model) {
this.model = model;
}
public void drive() {
System.out.println("Driving a " + model + " at " + speed + " mph");
}
}
在此示例中,Vehicle类有一个名为speed的字段和两个方法,setSpeed和start。Car类扩展了Vehicle并添加了一个名为model的字段和一个名为drive的方法。
创建Car的实例时,它可以访问Vehicle和Car的字段和方法。
3 继承中的访问修饰符
当一个子类从父类继承成员时,子类中成员的访问级别不能比父类中的更严格。换句话说,父类中的私有成员不能从子类中访问。
以下表格显示了超类中成员的访问级别如何影响子类中的可访问性:
4 重写方法
继承还允许子类覆盖其超类中定义的方法。这意味着子类提供了自己的方法实现,而不是使用从超类继承的实现。
以下是方法重写的示例:
class Vehicle {
public void start() {
System.out.println("Starting vehicle...");
}
}
class Car extends Vehicle {
@Override
public void start() {
System.out.println("Starting car...");
}
}
在此示例中,Car类使用自己的实现重写Vehicle的start方法。
当重写一个方法时,在子类的实例上调用该方法时,将调用子类的实现而不是超类的实现。如果子类想要调用超类的方法实现,可以使用super关键字。
5 抽象类
在Java中,抽象类是一种不能被实例化且旨在被子类化的类。抽象类可以有抽象方法,这些方法被声明但未实现。抽象类的子类必须为其所有抽象方法提供实现。
以下是抽象类的示例:
abstract class Animal {
protected String name;
public Animal(String name) {
this.name = name;
}
public abstract void makeSound();
}
class Dog extends Animal {
public Dog(String name) {
super(name);
}
@Override
public void makeSound() {
System.out.println(name + " barks");
}
}
在此示例中,Animal类是一个带有抽象方法makeSound的抽象类。Dog类扩展了Animal并为makeSound方法提供了实现。
6 最终类和方法
在Java中,final关键字可用于防止类被子类化或方法被覆盖。final类不能被扩展,final方法不能被其子类覆盖。
以下是示例:
final class Vehicle {
// ...
}
class Car extends Vehicle { // Error: Cannot extend final class
// ...
}
class Vehicle {
public final void start() {
// ...
}
}
class Car extends Vehicle {
@Override
public void start() { // Error: Cannot override final method
// ...
}
}
在这个示例中,Vehicle类被标记为final,因此它不能作为超类被子类化。Vehicle类中的start方法被标记为final,因此它不能被子类重写。
7 总结
继承是Java面向对象编程系统中的一个基本概念。它允许类从它们的父类中继承属性和方法,实现代码重用和创建类层次结构。Java支持单一继承,即一个类只能从一个超类继承;它也支持多层继承,即一个子类可以有它自己的子类。通过了解和有效地使用继承,可以以更模块化、可重用和可维护的方式设计和组织Java代码。
推荐书单
《Java语言程序设计(第3版)》
“十二五”普通高等教育本科国家级规划教材,畅销Java程序设计教材,已经被几百所高校选为教材。
本书第1版于2005年出版。第2版于2010年出版,是普通高等教育“十一五”国家级规划教材。第3版入选“十二五”高等教育本科国家级规划教材。 本书在介绍Java语言的同时,更注重Java语言的知识体系,系统性地分析了Java核心机制与基本原理。全书分为核心基础篇与应用技术篇。在核心基础篇中, 论述了面向对象程序设计的基本概念、Java语言基础(包括运算符与表达式、程序流控制、数组)、Java面向对象特性、异常处理方法、基于Swing的图形化用 户界面构造方法、输入/输出、Applet概念与应用。应用技术篇介绍了开发Java的高级应用技术,包括多线程、网络编程、JDBC数据库连接、J2EE技术、功能驱 动的Java程序开发方法以及Java编程规范。书中还提供了大量实例。 本书具有系统性、知识性、实用性等特点,可以作为大专院校教材,也可作为Java编程爱好者的参考书。
购买链接:https://item.jd.com/11949337.html
精彩回顾