Java中的继承是面向对象编程的四大基本特性之一(封装、继承、多态、抽象)。继承允许我们定义一个基础类(父类或超类),然后创建一个新的类(子类或派生类),该新类继承父类的属性和方法。
在Java中,子类可以访问父类的非私有成员(即public和protected成员)。私有成员(private)只能被定义它们的类访问。
class Parent {
public int publicVar = 1;
protected int protectedVar = 2;
private int privateVar = 3;
public void publicMethod() {
System.out.println("This is a public method.");
}
protected void protectedMethod() {
System.out.println("This is a protected method.");
}
private void privateMethod() {
System.out.println("This is a private method.");
}
}
class Child extends Parent {
void accessParentMembers() {
System.out.println(publicVar); // 可以访问
System.out.println(protectedVar); // 可以访问
// System.out.println(privateVar); // 编译错误,无法访问私有成员
publicMethod(); // 可以访问
protectedMethod(); // 可以访问
// privateMethod(); // 编译错误,无法访问私有方法
}
}
public class Main {
public static void main(String[] args) {
Child child = new Child();
child.accessParentMembers();
}
}
Java支持单继承,即一个子类只能有一个直接父类,但可以通过接口实现多重继承。
原因:私有成员只能在定义它们的类中访问。
解决方法:如果需要在子类中访问这些成员,可以将它们改为protected或public,或者提供公共的getter和setter方法。
原因:当子类和父类有相同签名的方法时,可能会产生歧义。
解决方法:使用@Override
注解明确表示子类方法覆盖了父类方法,并确保方法签名完全一致。
class Parent {
public void display() {
System.out.println("Parent display");
}
}
class Child extends Parent {
@Override
public void display() {
System.out.println("Child display");
}
}
通过以上内容,你应该对Java中的继承以及如何访问父类和子类有了基本的了解。如果有更具体的问题或需要进一步的解释,请随时提问。
领取专属 10元无门槛券
手把手带您无忧上云