gpt4 book ai didi

java - Java中子类可以直接调用父类的实例方法吗?

转载 作者:太空宇宙 更新时间:2023-11-04 12:13:07 25 4
gpt4 key购买 nike

我有以下两个类(class)。我想知道如何在不创建 ClassAClassB 实例的情况下调用 B 类中的 ClassA 实例方法,即 AMessage()

我想我应该调用ClassA的实例方法,即B类中的AMessage(),如下所示:

new ClassA().AMessage(); //no compile error

new ClassB().Amessage(); //no compile error

父类(ClassA.java)

public class ClassA {
public void AMessage(){
System.out.println("A Message");
}
}

子类(ClassB.java)

public class ClassB extends ClassA{

public void BMessage(){
AMessage(); //no compile error
}
public static void main(String[] args){
new ClassB().BMessage();
}
}

最佳答案

当一个类扩展另一个类时,它会自动继承基类的可见字段和方法。我所说的可见成员是指可访问的成员。私有(private)成员不能被继承。了解有关继承的更多信息 http://www.tutorialspoint.com/java/java_inheritance.htm

因此,如果您有一个 ClassA 类,它具有如下所示的 AMessage 方法:

public class ClassA{
public void AMessage(){
System.out.println("A message");
}
}

ClassB 扩展了 ClassA,如下所示:

public class ClassB extends ClassA{

public void BMessage(){
AMessage();
}
public static void main(String[] args){
new ClassB().BMessage();
}
}

ClassB 自动继承 ClassA 的成员,即它们的行为就好像它们是 ClassB 本身的成员一样。这就是为什么我们可以在ClassB内部调用ClassA的实例方法而无需任何实例,因为它们也属于ClassB。除了实例方法之外,您还可以调用类似的静态方法。 (但是当然您可以在静态方法中调用实例方法。)

作为一个附加答案,我想建议(虽然它与问题无关,但这是一个很好的做法)您应该不要以大写字母开头命名类(实例或静态)的任何方法。如果仍然这样命名,不会产生任何编译器错误,但会影响可读性。我写下这样的名字只是为了与你的问题相关。

关于java - Java中子类可以直接调用父类的实例方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39684998/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com