我是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问题。
答案 0 :(得分:1)
在这里给我举个例子,假设您的父类ABC
具有静态方法或实例变量
class ABC{
int a;
static void display(){
System.out.println("Parent ABC");
}
现在您有ABC abc = new test();
。使用引用abc
,您可以访问子类public void myMethod()
的{{1}}和类test
的静态方法static void display()
。另外,您可以将类ABC
的实例变量a
与引用ABC
一起使用。
请记住,始终根据引用类型(在这种情况下,类型为abc
)调用静态方法,实例变量,静态变量。而实例方法总是在我们引用的类型的对象上调用(在这种情况下,我们引用的是ABC
类Object)。
答案 1 :(得分:0)
从另一个类扩展一个类时,它将成为父类的子类(扩展类)。
父引用可以包含一个孩子,而子引用始终可以包含一个自己的实例。
test t = new test();
ABC abc = new test();
都有效。对于为什么这个问题,克服某些情况可能会派上用场。
详细了解面向对象编程中的多态性概念。