下面我将用完整的 Java 代码示例来展示继承的实现,包括父类、子类的定义以及继承关系的使用:
// 父类:动物
public class Animal {
// 共享属性
protected String name;
protected int age;
// 父类构造方法
public Animal(String name, int age) {
this.name = name;
this.age = age;
}
// 父类的通用方法
public void eat() {
System.out.println(name + "正在吃东西");
}
public void sleep() {
System.out.println(name + "正在睡觉");
}
public void introduce() {
System.out.println("我叫" + name + ",今年" + age + "岁");
}
}
// 子类:猫,继承自动物类
public class Cat extends Animal {
// 子类构造方法
public Cat(String name, int age) {
super(name, age); // 调用父类的构造方法
}
// 子类特有方法
public void meow() {
System.out.println(name + "在喵喵叫");
}
// 重写父类方法
@Override
public void eat() {
System.out.println(name + "在吃鱼");
}
}
// 子类:狗,继承自动物类
public class Dog extends Animal {
// 子类特有属性
private String breed; // 品种
// 子类构造方法,通过super调用父类构造方法
public Dog(String name, int age, String breed) {
super(name, age); // 调用父类的构造方法
this.breed = breed;
}
// 子类特有方法
public void bark() {
System.out.println(name + "在汪汪叫");
}
// 重写父类方法,实现多态
@Override
public void eat() {
System.out.println(name + "在啃骨头");
}
// 重写父类介绍方法,添加子类特有信息
@Override
public void introduce() {
super.introduce(); // 调用父类的introduce方法
System.out.println("我是一只" + breed);
}
}
// 测试类
public class InheritanceTest {
public static void main(String[] args) {
// 创建狗对象
Dog dog = new Dog("小黑", 3, "拉布拉多");
dog.introduce();
dog.eat(); // 调用重写后的方法
dog.sleep(); // 继承父类的方法
dog.bark(); // 子类特有方法
System.out.println("-------------------");
// 创建猫对象
Cat cat = new Cat("小白", 2);
cat.introduce();
cat.eat(); // 调用重写后的方法
cat.sleep(); // 继承父类的方法
cat.meow(); // 子类特有方法
}
}
代码解释:
继承关系:
Dog和Cat类通过extends关键字继承自Animal类
子类自动获得父类的属性(name、age)和方法(eat()、sleep()等)
构造方法:
子类构造方法中使用super()调用父类的构造方法
必须在子类构造方法的第一行调用父类构造方法
方法重写:
子类可以重写父类的方法(如eat()和introduce())
使用@Override注解标识重写的方法,提高代码可读性
子类特有功能:
子类可以添加自己特有的属性(如Dog类的breed)
子类可以添加自己特有的方法(如bark()和meow())
访问修饰符:
父类使用protected修饰的属性,子类可以直接访问
这体现了封装与继承的平衡
运行InheritanceTest类,你会看到子类既可以使用父类的方法,又可以有自己的实现,这就是继承的核心价值:代码复用和功能扩展。