首页 > 编程知识 正文

覆盖父类方法(静态类可以被继承吗)

时间:2023-05-03 11:19:31 阅读:79874 作者:4339

我们知道,在java中,可以通过复盖来加强或减弱父类的方法,但复盖是针对非静态方法的。 那么,子类复盖父类的静态方法会怎么样呢?

父类

在父类中创建了两个方法和变量:静态方法和非静态方法。

子类

子类涵盖父类的两个方法和一个变量。 测试从现在开始~~~

测试类

首先,测试变量。 我们知道java的实例对象有两种类型:曲面类型和实际类型。 如果在测试类中,在实例的FatherMethod sm中,sm的表面类型是FatherMethod,实际类型是SonMethod,那么第一个语句输出的变量x的实际类型是SonMethod的x值吗? 还是原来的FatherMethod的x值呢?

然后,调用sm的静态方法和非静态方法。 调用静态方法时,如果使用实例对象进行调用,则下划线会发出警告。 强迫症请清除它。 实际上,java推荐的静态方法形式是按类名调用。 因为静态方法属于整个类。 那么,调用这三个方法会输出什么? 第一种方法是调用传统的非静态子类,所以答案应该很明显。 那么,如果调用第二个和第三个方法会怎么样呢? 是所有调用的父类的静态方法吗? 还是调用所有子类的静态方法? 还是调用各自的方法?

明确答案

测试结果

那么,看到这个结果有没有感到吃惊? 因此,在这里我们引入隐藏的概念。 隐藏是指在子类中重写父类的变量和静态方法。 与改写有两个不同。

的区别在于,隐藏用于静态方法或成员变量,重写用于非静态方法。

与责任不同,隐藏的目的是隐藏子类的方法或属性,而重写是加强或削弱父类的方法。

综上所述,写继承时请注意。 静态方法不能被重写,但可以被隐藏。 最后,从实例对象访问成员的属性和方法是一个不好的习惯。 有这个习惯的人请尽早改正~~~

谢谢你的观看~喜欢的关注一波~~每天分享一些知识~

最后附上每天记住的10个单词:

worship ['w:ip] n .崇拜; 礼拜; 尊敬

特殊[ ' SPE () l; e-] adj .特别的、特别的

suffice (传真) VT .令人满意; 充分使用; 合格

使其退化;使其退化; 恶化

advocate [ ' dv工具包; --t ) vt .提倡、主张和捍卫

木偶; 人偶; 没有头脑的美丽女人

感知n .一致; 舆论; 达成协议

grope.探索; 搜索

地图集; 寰椎

reason['Riz(n ) n .理由; 理性; 动机

每天一点一点地学习~~~加油~~!

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。