超类对象还是子类对象?为什么?

时间:2018-07-08 04:10:09

标签: java class subclass superclass

我是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问题。

2 个答案:

答案 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();

都有效。对于为什么这个问题,克服某些情况可能会派上用场。

详细了解面向对象编程中的多态性概念。