📅  最后修改于: 2023-12-03 15:31:34.709000             🧑  作者: Mango
Java 中的继承是一个非常强大的面向对象的特性。继承可以让一个类从另一个类那里直接获得某些属性和方法,从而简化代码。
在 Java 中,一个类可以通过 extends
关键字继承另一个类的属性和方法。被继承的类称为父类,继承的类称为子类。
Java 中,使用 extends
关键字创建子类。语法如下:
class SubClass extends SuperClass {
// 子类代码
}
其中,SubClass
是子类,SuperClass
是父类。
子类继承父类的方式有两种:
这是最常见的一种方式,在子类中可以直接使用父类的属性和方法。
class SuperClass {
public int publicVar;
protected int protectedVar;
public void publicMethod() {
System.out.println("This is a public method.");
}
protected void protectedMethod() {
System.out.println("This is a protected method.");
}
}
class SubClass extends SuperClass {
public void subMethod() {
publicMethod(); // 子类可以直接使用 public 方法
protectedMethod(); // 子类可以直接使用 protected 方法
publicVar = 1; // 子类可以直接使用 public 属性
protectedVar = 2; // 子类可以直接使用 protected 属性
}
}
子类实例化后可以访问自己的属性和方法以及从父类继承来的属性和方法。
SubClass sub = new SubClass();
sub.subMethod();
此时,子类只可以继承父类的 public 属性和方法。如果父类中没有 public 的属性和方法,则子类就没有任何继承的属性和方法。
class SuperClass {
protected int protectedVar;
protected void protectedMethod() {
System.out.println("This is a protected method.");
}
}
class SubClass extends SuperClass {
public void subMethod() {
// 子类只可以使用从父类继承来的 public 方法
// 子类无法使用 protected 方法
protectedMethod(); // 会编译错误
publicVar = 1; // 子类可以直接使用 public 属性
protectedVar = 2; // 子类无法使用 protected 属性,会编译错误
}
}
在子类中,super
关键字可以用来调用父类的方法和属性。可以使用 super()
调用父类的构造方法。
class SuperClass {
protected int var;
public SuperClass(int var) {
this.var = var;
}
public void method() {
System.out.println("This is a method of SuperClass.");
}
}
class SubClass extends SuperClass {
public SubClass(int var) {
super(var); // 调用父类的构造方法
}
public void subMethod() {
super.method(); // 调用父类的方法
}
}
当子类继承父类时,有一个重要的问题是子类可以访问父类的哪些属性和方法。Java 规定:
Java 的继承是面向对象编程中非常强大的一个特性,可以让我们简化代码,提高效率。理解继承的细节非常重要,这可以帮助你编写出更清晰、更可维护的代码。