让我们先从继承的概念入手。继承(Inheritance)是一种面向对象的编程技术,它允许某个类(子类)去继承它的另一个类(父类)的属性和方法。这个技术可以减少重复性代码,提高代码复用性和可维护性。在 Java 中,子类通过关键字 extends
来继承父类。
继承原理
Java 使用类的继承机制来实现继承。在 Java 中,一个类可以通过关键字 extends
继承另一个类。被继承的类称为父类(或超类),继承自父类的类称为子类(或派生类)。子类从父类继承了父类的非私有成员变量和方法,并且可以重写(override)这些方法来改变其实现方式。在 Java 中,我们可以使用 super
关键字来访问父类的成员。
继承的过程中,Java 使用了一种叫做单继承的方式。即每个子类只能继承一个父类。这是为了避免多重继承所带来的问题,比如名称冲突和歧义等。
继承实现方法
1. 创建父类
在 Java 中,我们可以使用 class
关键字来创建一个类,这个类就可以作为父类。下面是一个简单的父类示例:
public class Animal {
private String name;
private int age;
public Animal(String name, int age) {
this.name = name;
this.age = age;
}
public void eat() {
System.out.println(name + " is eating");
}
public void sleep() {
System.out.println(name + " is sleeping");
}
}
2. 创建子类
使用 extends
关键字来继承父类的属性和方法。下面是一个简单的子类示例:
public class Cat extends Animal {
public Cat(String name, int age) {
super(name, age);
}
@Override
public void eat() {
System.out.println("Cat is eating");
}
public void climbTree() {
System.out.println(super.getName() + " is climbing tree");
}
}
在这个例子中,Cat
继承了 Animal
的所有非私有成员变量和方法,并且重写了 eat
方法。climbTree
方法是子类中新增的方法。
3. 实例化子类
我们可以使用和实例化普通类相同的方式来实例化子类,例如:
public class Main {
public static void main(String[] args) {
Cat cat = new Cat("Tom", 2);
cat.sleep();
cat.eat();
cat.climbTree();
}
}
可以看到,父类的成员 sleep
方法在子类中依然能够被访问和调用。而子类的方法 climbTree
只能在子类中被调用。
示例说明
示例1
public class Vehicle {
private int numOfWheels;
public Vehicle(int numOfWheels) {
this.numOfWheels = numOfWheels;
}
public void drive() {
System.out.println("This vehicle is driving");
}
}
public class Car extends Vehicle {
public Car() {
super(4);
}
public void honk() {
System.out.println("This car is honking");
}
}
这个示例中的 Vehicle
类是一个车辆类,包含一个 numOfWheels
属性和一个 drive
方法。Car
类是一个汽车类,继承自 Vehicle
类,并新增了一个 honk
方法。
示例2
public class Shape {
private String color;
public Shape(String color) {
this.color = color;
}
public double getArea() {
return 0;
}
}
public class Circle extends Shape {
private int radius;
public Circle(String color, int radius) {
super(color);
this.radius = radius;
}
@Override
public double getArea() {
return Math.PI * radius * radius;
}
}
这个示例中的 Shape
类是一个图形类,包含一个 color
属性和一个 getArea
方法。Circle
类是一个圆形类,继承自 Shape
类,并重写了 getArea
方法。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java的继承原理与实现方法详解 - Python技术站