java - 使用自己的抽象方法的抽象类
问题描述
我最近开始阅读抽象类。我访问的大多数网站,我看到父类是抽象的,子类定义了父类的抽象方法。这对我来说很好,但最近我看到了一种使用抽象类的不同方式。代码正在运行,但我无法理解逻辑。代码如下
抽象类 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”如何这是对父类的引用可以访问子类中定义的方法
或者关于抽象类有什么我想知道的......我在哪里失踪
请帮助我
解决方案
这是因为称为多态的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
推荐阅读
- node.js - 获取 Node.js + Express REST API 来更新 mongoDB
- search - 如何配置 Fuse.js 搜索结果以匹配单个单词?
- python - Coinpaprika 达到最大请求限制错误
- mysql - 加载 infile 命令从第一个字符中删除 0
- android - 我的 (android) 设备进入睡眠状态后,我的网站的音频播放器将暂停
- reactjs - 在反应引导下拉按钮中显示第一个选定的项目
- c++ - 为什么小于等于运算符在 C++ 中对两个 ```double``` 值显示意外行为?
- node.js - 如何将 Flutter 与 NodeJS 后端连接起来
- azure - 有没有办法为 Azure AD 中的一些来宾帐户设置基于 OTP 的身份验证?
- swift - Swift 如何知道是否选择了我的细分项目之一?