![](/img/trans.png)
[英]What's the difference between declaring array in main class or in main method?
[英]How to access print method of class A in main method? Difference between objects a and b created in main method?
如何在主方法中访问A类的打印方法? 在main方法中创建的对象a和b之间的区别?
abstract class A {
void print() {
System.out.println("A");
}
}
class B extends A {
void print() {
System.out.println("B");
}
}
public class test {
public static void main(String[] args) {
B b = new B();
A a = new B();
b.print();
a.print();
}
}
如何在主方法中访问A类的打印方法?
您不能,因为您没有A
的实例,只有B
的实例,该实例已覆盖该方法。
在main方法中创建的对象a和b之间的区别?
它们是B
不同实例。
将a初始化为新的A(),而不是新的B(),
要么
向B添加一个方法,例如printA()
void printA(){super.print(); }
在这两种情况下,都将调用class B
overriden print()
。
情况1: B b = new B();
这种情况很简单。 您使用B参考创建B对象。
情况2: A a = new B();
在这里,您正在使用A reference
创建B object
。 这称为创建对象或coding to an interface
多态性。 由于您在class B
覆盖了 print()
,因此在运行时将调用class B
重载方法。
其他选择:
在类B中创建一个方法,该方法将使用super关键字调用类A的打印方法。
class B extends A {
public void someOtherMethod(){
super.print();
}
}
from main:
B b = new B();
b.someOthermethod();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.