Java|类的继承中两种错误的解决方式 |案例介绍

欢迎点击「算法与编程之美」↑关注我们!

本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章

欢迎加入团队圈子!与作者面对面!直接点击!

|案例介绍

在日常用Java写代码的过程中,往往在子类继承父类时,会出现一些问题。今天我来讲解两个常见问题的解决方式。

|问题分析1

重写父类方法时修改权限导致继承失败。

源码如下:

class Test{

public Test(){

protected void doAe(){

protected Test doIt(){

return new Test();

}

}

}

}

class Test2 extends Test{

public Test2(){

super();

super.doAe();

}

public void doAenew(){

}

public void doAe(){

}

private Test2 doIT(){

return new Test2();

}

}

|解决方案

当重写父类方法时,修改的方法权限只能从小的范围到大的范围改变,如上面的程序,父类中的 doAe() 方法的权限为 protected ,继承后子类中的方法 doAe() 的修饰权限只能修改为 public,或者不变。

修改后的代码如下:

class Test{

public Test(){

protected void doAe(){

protected Test doIt(){

return new Test();

}

}

}

}

class Test2 extends Test{

public Test2(){

super();

super.doAe();

}

public void doAenew(){

}

public void doAe(){

}

public Test2 doIT(){

return new Test2();

}

}

|问题分析2

实例化子类对象前,无参数的父类构造函数执行,但有参数的却未执行。

源码如下:

class Pa{

public Pa(){

System.out.println("调试父类的构造方法。");

}

public Pa(String[] args){

System.out.println("调用父类带参数的构造方法。");

}

}

class AaPa extends Pa{

public AaPa(){

System.out.println("调用子类的AaPa()构造方法。");

}

}

public class AaCc extends AaPa{

AaCc(){

System.out.println("调用子类的AaCc()构造方法。");

}

public static void main(String[] args){

AaCc a = new AaCc();

}

}

|解决方案

在调用子类构造方法之前,会自动调用父类无参数的构造函数,若想要执行父类带参数的构造函数,只能使用 super 关键字显示调用父类的构造方法。

修改后的代码如下:

class Pa{

public Pa(){

System.out.println("调试父类的构造方法。");

}

public Pa(String[] args){

System.out.println("调用父类带参数的构造方法。");

}

}

class AaPa extends Pa{

public AaPa(){

super("args");

System.out.println("调用子类的AaPa()构造方法。");

}

}

public class AaCc extends AaPa{

AaCc(){

System.out.println("调用子类的AaCc()构造方法。");

}

public static void main(String[] args){

AaCc a = new AaCc();

}

}

END

主  编   |   王文星

责  编   |   李劲潮

where2go 团队

   

微信号:算法与编程之美          

Java|类的继承中两种错误的解决方式 |案例介绍

长按识别二维码关注我们!

温馨提示: 点击页面右下角 “写留言”发表评论,期待您的参与!期待您的转发!

原文 

http://mp.weixin.qq.com/s?__biz=MzI5MTQ5NDY1MA==&mid=2247491071&idx=1&sn=f4b1000bb79f446e85dcbcd8d8876273

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » Java|类的继承中两种错误的解决方式 |案例介绍

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址