【JAVA】Java基础—面向对象编程:继承—extends 关键字的使用
在Java编程中,extends
关键字用于实现类之间的继承关系。继承是面向对象编程(OOP)的一个重要特性,它允许一个类(子类)继承另一个类(父类)的属性和方法。通过继承,子类不仅能够复用父类的代码,还可以扩展或修改其功能。
我们可以将extends
关键字的使用比作家族关系。比如,一个孩子(子类)继承了父母(父类)的特征和能力。孩子不仅可以使用父母的能力(例如,语言能力),还可以发展出自己的特长(例如,音乐才能)。
一、extends
关键字的基本概念
1. 基本语法
在Java中,使用extends
关键字来定义一个类是如何继承另一个类的。基本语法如下:
class Parent {
// 父类的属性和方法
}
class Child extends Parent {
// 子类的属性和方法
}
2. 示例代码
我们通过一个简单的示例来说明extends
关键字的使用。
示例:
// 父类
class Vehicle {
String brand; // 车辆品牌
int speed; // 车辆速度
// 父类构造方法
public Vehicle(String brand, int speed) {
this.brand = brand;
this.speed = speed;
}
// 父类方法
public void displayInfo() {
System.out.println("Brand: " + brand + ", Speed: " + speed + " km/h");
}
}
// 子类
class Car extends Vehicle {
int doors; // 车门数量
// 子类构造方法
public Car(String brand, int speed, int doors) {
super(brand, speed); // 调用父类构造方法
this.doors = doors;
}
// 子类特有的方法
public void displayCarInfo() {
displayInfo(); // 调用父类方法
System.out.println("Doors: " + doors);
}
}
// 主类
public class Main {
public static void main(String[] args) {
Car car = new Car("Toyota", 120, 4); // 创建子类对象
car.displayCarInfo(); // 调用子类的方法
}
}
代码解释:
-
**父类
Vehicle
**:-
定义了两个属性
brand
(车辆品牌)和speed
(车辆速度)。 -
构造方法用于初始化品牌和速度。
-
displayInfo()
方法用于显示车辆信息。
-
-
**子类
Car
**:-
使用
extends
关键字继承Vehicle
类。 -
添加了一个特有属性
doors
(车门数量)。 -
在构造方法中,使用
super(brand, speed)
调用父类的构造方法,以初始化继承的属性。 -
定义了
displayCarInfo()
方法,调用父类的displayInfo()
方法,并输出车门数量。
-
-
**主类
Main
**:-
创建
Car
类的对象car
,并调用displayCarInfo()
方法,展示了车辆的品牌、速度和车门数量。
-
二、extends
关键字的特点
-
单继承:Java不支持多重继承,即一个类只能直接继承一个父类。这有助于避免复杂的继承关系和潜在的冲突。
-
构造方法:子类的构造方法必须调用父类的构造方法(使用
super
关键字),以确保父类的属性被正确初始化。 -
方法重写:子类可以重写父类的方法,以提供特定的实现。这种特性使得多态性得以实现。
三、方法重写示例
为了更深入地理解extends
关键字的使用,我们来看一个方法重写的示例。
示例:
// 父类
class Animal {
public void sound() {
System.out.println("Animal makes a sound.");
}
}
// 子类
class Dog extends Animal {
@Override // 注解,表示重写父类的方法
public void sound() {
System.out.println("Dog barks.");
}
}
// 子类
class Cat extends Animal {
@Override // 注解,表示重写父类的方法
public void sound() {
System.out.println("Cat meows.");
}
}
// 主类
public class Main {
public static void main(String[] args) {
Animal myDog = new Dog(); // 父类引用指向子类对象
Animal myCat = new Cat(); // 父类引用指向子类对象
myDog.sound(); // 调用Dog类中的重写方法
myCat.sound(); // 调用Cat类中的重写方法
}
}
代码解释:
-
**父类
Animal
**:-
定义了一个方法
sound()
,输出“Animal makes a sound.”。
-
-
**子类
Dog
**:-
使用
extends
关键字继承Animal
类。 -
重写了
sound()
方法,输出“Dog barks.”。
-
-
**子类
Cat
**:-
同样继承
Animal
类,并重写sound()
方法,输出“Cat meows.”。
-
-
**主类
Main
**:-
创建
Dog
和Cat
类的对象,分别赋值给Animal
类型的引用。 -
调用
sound()
方法时,实际上调用的是子类的重写方法,展示了多态性。
-
原文地址:https://blog.csdn.net/thinking_chou/article/details/143757498
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!