📅  最后修改于: 2023-12-03 15:01:34.927000             🧑  作者: Mango
Java 中的继承是面向对象编程的核心概念之一。继承允许代码在不改变原本逻辑的情况下实现代码重用,同时避免了重复代码的问题。
继承是一种机制,用于一个类可以继承另一个类的属性和方法。子类(派生类)继承自父类(基类或超类),并且可以覆盖或添加自己的属性和方法。
在 Java 中,使用 extends
关键字来实现继承。下面是一个示例:
public class Animal {
public void eat() {
System.out.println("Animal is eating");
}
}
public class Cat extends Animal {
public void meow() {
System.out.println("Meow!");
}
}
上面的代码中,Cat
类继承自 Animal
类,因此 Cat
类具有 Animal
类中的 eat()
方法,同时也添加了自己的 meow()
方法。
子类可以 @Override
父类的方法,以改变或扩展父类的行为。例如:
public class Animal {
public void makeSound() {
System.out.println("Animal is making a sound");
}
}
public class Cat extends Animal {
@Override
public void makeSound() {
System.out.println("Meow!");
}
}
在这个例子中,Cat
类重写了 Animal
类中的 makeSound()
方法,以输出猫的特定叫声。
子类可以使用 super
关键字来调用父类的构造方法、属性和方法。例如:
public class Animal {
protected String name;
public Animal(String name) {
this.name = name;
}
public void eat() {
System.out.println("Animal is eating");
}
}
public class Cat extends Animal {
public Cat(String name) {
super(name);
}
public void meow() {
System.out.println("Meow!");
}
}
在这个例子中,Cat
类调用父类 Animal
的构造方法来设置 name
属性。
抽象类和接口是 Java 程序员用来定义类和对象的另外两种方法。
抽象类是一种不能被实例化的类,它的目的是为了让其子类来实现或重写其抽象方法。例如:
public abstract class Animal {
protected String name;
public Animal(String name) {
this.name = name;
}
public abstract void makeSound();
}
public class Cat extends Animal {
public Cat(String name) {
super(name);
}
@Override
public void makeSound() {
System.out.println("Meow!");
}
}
在这个例子中,Animal
类被声明为抽象,因为它有一个或多个抽象方法。Cat
类实现了 Animal
类中的 makeSound()
方法。
接口是 Java 中一种特殊的抽象类,它只包括一组方法定义,而没有实现。所有实现了该接口的类都必须实现其所有的方法。例如:
public interface Animal {
public void makeSound();
}
public class Cat implements Animal {
@Override
public void makeSound() {
System.out.println("Meow!");
}
}
在这个例子中,Cat
类实现了 Animal
接口中的 makeSound()
方法。
在 Java 中,继承是一种重要的面向对象编程概念。它允许代码重用和扩展。子类可以重写父类中的方法,并使用 super
关键字调用父类的构造方法、属性和方法。此外,还有抽象类和接口这两种方式来定义类和对象。