This question already has answers here:
What does it mean to “program to an interface”?
(32个答案)
What is polymorphism, what is it for, and how is it used?
(28个答案)
2年前关闭。
我是Java初学者,我不知道何时创建超类或子类的实例。我正在在线学习一些教程,发现几次类似于以下代码:
为什么我应该使用
如果我需要一个新的ABC对象,只使用
谢谢您,很抱歉提出noobie问题。
现在您有了
请记住,静态方法,实例变量,静态变量始终在引用类型上调用(在这种情况下,类型为
(32个答案)
What is polymorphism, what is it for, and how is it used?
(28个答案)
2年前关闭。
我是Java初学者,我不知道何时创建超类或子类的实例。我正在在线学习一些教程,发现几次类似于以下代码:
package test;
class ABC{
public void myMethod(){
System.out.println("Overridden Method");
}
}
public class test extends ABC{
@Override
public void myMethod(){
System.out.println("Overriding Method");
}
public static void main(String args[]){
ABC obj = new test();
obj.myMethod();
}
}
为什么我应该使用
ABC obj = new test();
而不是test = new test();
?如果我需要一个新的ABC对象,只使用
ABC obj = new ABC();
是否有意义?谢谢您,很抱歉提出noobie问题。
最佳答案
让我给您举个例子,说您的父类ABC
具有静态方法或实例变量
class ABC{
int a;
static void display(){
System.out.println("Parent ABC");
}
现在您有了
ABC abc = new test();
。使用引用abc
,您可以访问子类public void myMethod()
的test
和类static void display()
的静态方法ABC
。另外,您可以将类a
的实例变量ABC
与引用abc
一起使用。请记住,静态方法,实例变量,静态变量始终在引用类型上调用(在这种情况下,类型为
ABC
)。而实例方法总是根据我们要引用的对象的类型来调用(在这种情况下,我们要引用test
类Object)。