栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在Java中,super.getClass()输出“ Child”而不是“ Parent”-为什么?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在Java中,super.getClass()输出“ Child”而不是“ Parent”-为什么?

使用的方法调用

super
只会忽略当前类中的所有覆盖。例如:

class Parent {    @Override public String toString() {        return "Parent";    }}class Child extends Parent {    @Override public String toString() {        return "Child";    }    public void callToString() {        System.out.println(toString()); // "Child"        System.out.println(super.toString()); // "Parent"    }}

在调用的情况下

getClass()
,这是一个方法,它返回被调用的类,并且不能被覆盖-
因此,尽管我可以看到您为什么期望它返回
Parent.class
,但它仍然使用与通常相同的 实现
,返回
Child
。(如果您确实需要父类,则应查看
Class
API。)

实际上,通常将其用作替代的一部分。例如:

@Override public void validate() {    // Allow the parent class to validate first...    super.validate();    // ... then perform child-specific validation    if (someChildField == 0) {        throw new SomevalidationException("...");    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/496470.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号