首页 > 解决方案 > 使用自己的抽象方法的抽象类

问题描述

我最近开始阅读抽象类。我访问的大多数网站,我看到父类是抽象的,子类定义了父类的抽象方法。这对我来说很好,但最近我看到了一种使用抽象类的不同方式。代码正在运行,但我无法理解逻辑。代码如下

    抽象类 TestParent
    {
      抽象无效显示();

       公共无效访问显示()
       {
         展示();
       }
    } // 测试父级

    公共类 TestChild 扩展了 TestParent
    {
       无效显示()
       {
          System.out.println("子定义显示");
       }

       无效打印()
       {
          System.out.println("这是打印");
       }

       公共静态无效主要(字符串... arg)
       {
          TestChild t_child=new TestChild();

          t_child.accessdisplay();  
          t_child.print();
          System.out.println("\n********************************************** *\n");

          TestParent t_parent=new TestChild();

          t_parent.accessdisplay();  
          t_parent.display();  
          //t_parent.print();
       }    
    }


代码正在运行....但我从未见过抽象类尝试使用自己的抽象方法....

代码“t_parent.accessdisplay()”是如何工作的?我知道 TestChild 被引用到 TestParent .... 所以 TestChild 可以访问父类方法....但是 display() 是一个抽象方法..它在子类中定义...对象“t_parent”如何这是对父类的引用可以访问子类中定义的方法

或者关于抽象类有什么我想知道的......我在哪里失踪

请帮助我

标签: javaabstract-class

解决方案


这是因为称为多态的OO概念。

“t_chiled”和“t_parent”是对象引用变量。它们本身不是对象。将它们视为遥控器(电视遥控器)。每个方法都映射到遥控器中的一个按钮。并且由于子类继承父类的方法,子对象可以响应父遥控器的所有按钮。因此,可以在需要父对象的地方替换子对象。

在这段代码中,

TestParent t_parent= new TestChild();

父对象引用变量(t_parent)引用在堆上创建的 TestChild 对象。它不引用 TestParent 对象。因此,它不是指抽象方法

t_parent.accessdisplay();

有时候是这样的。它只是引用 TestChild 对象中的重写方法。

有关 java 中的多态性的更多信息,请访问https://www.tutorialspoint.com/java/java_polymorphism.htm


推荐阅读