我们知道Java中可以通过复盖来加强或削弱父类的方法,但如果复盖是为了非静态方法,那么子类复盖父类的静态方法会是什么样的?(阿尔伯特爱因斯坦,Northern Exposure,成功)在超类超类中创建两个方法和一个变量。一种是静态方法,另一种是非静态方法。
子类
子类里面覆盖父类的两个方法和一个变量。接下去开始测试了~~
测试类
首先,测试变量,我们知道在java的实例对象有两种类型,一种是表面类型,一种是实际类型。在测试类中实例的FatherMethod sm中sm的表面类型为FatherMethod,实际类型为SonMethod,那么第一句输出的变量X的实际类型为SonMethod的X值吗?还是原来的FatherMethod的X值呢?
其次,调用sm的静态方法和非静态方法,调用静态方法的时候,如果采用实例对象去调用的话,会有下划线提示警告~强迫症必须把它去掉哈哈!其实java里面推荐的调静态方法的形式为用类名去调用,因为静态方法是属于整个类的。那么调用这三个方法会输出什么呢?第一个是传统的调用非静态的子类方法,所以答案应该显而易见了。那么调用第二个方法和第三个方法会出现什么结果呢?是都调用的父类的静态方法还是都是调用子类的静态方法,还是各自调各自的呢?
揭晓答案
测试结果
好吧,看到这个结果有没有恍然大悟呢?所以这里要引入隐藏的概念了,隐藏指的是在子类中重写了父类的变量和静态方法。它和重写有两种不同:
表现形式的不同,隐藏是用于静态方法或者成员变量的而重写是用于非静态方法。
职责不同,隐藏的目的是为了隐藏子类的方法或者属性,而重写是对父类的方法进行增强或者削弱。
综上所诉,大家在写继承的时候一定要注意,静态方法不能重写但是可以隐藏,最后再说一句,通过实例对象访问成员属性和方法是不好的习惯,有这个习惯的尽早改正哈哈~~~
谢谢收看~喜欢的关注一波~~每天分享一些知识~~
最后附上每天背的10个单词:
worship ['wə:ʃip] n. 崇拜;礼拜;尊敬
especial [ɪ'speʃ(ə)l; e-] adj. 特殊的,特别的
suffice [sə'faɪs] vt. 使满足;足够…用;合格
degenerate [dɪ'dʒen(ə)rət] vt. 使退化;恶化
advocate ['ædvəkeɪt;-ət] vt. 提倡,主张,拥护
doll [dɒl] n. 洋娃娃;玩偶;无头脑的美丽女人
consensus [kən'sensəs] n. 一致;舆论;合意
grope [grəʊp] vi. 摸索;探索
atlas ['ætləs] n. 地图集;寰椎
reason ['riːz(ə)n] n. 理由;理性;动机
每天学习一点点~~~加油~~!
1.文章《java 子类与父类是什么》援引自互联网,为网友投稿收集整理,仅供学习和研究使用,内容仅代表作者本人观点,与本网站无关,侵删请点击页脚联系方式。
2.文章《java 子类与父类是什么》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
相关推荐
- . 现代买票为什么带上携程保险
- . 潮阳怎么去广州南站
- . 湖南马拉河怎么样
- . 烧纸为什么到三岔路口
- . 百色为什么这么热
- . 神州租车怎么样
- . 芜湖方特哪个适合儿童
- . 护肤品保养液是什么类目
- . 早晚的护肤保养有哪些项目
- . 女孩护肤品怎么保养的最好