超类对象或子类对象?为什么? [重复]

问题描述 投票:0回答: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问题感到抱歉。

java class subclass superclass
2个回答
1
投票

让我举个例子,比如你的父类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)。然而,总是在我们引用的Object类型上调用实例方法(在这种情况下,我们引用test类Object)。


0
投票

当一个类从另一个类扩展时,它将成为父类(扩展类)的子类。

父引用可以包含子项,而子引用可以始终保存它的实例。

test t = new test();
ABC abc = new test();

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

阅读有关面向对象编程中多态性概念的更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.