java中显性建构函数,浅谈Java中类的继承

继承作为面向对象的三大基本特征之一,也是Java中必不可少的组成部分。因此,Java中类的继承和其他面向对象语言的继承都是大同小异的。

继承的优点:

通过继承可以简化类的定义.

Java只支持单继承,不允许多重继承.

可以有多承继承,即一个类可以继承某个类的子类,如类B继承了类A,类C又继承了类B,那么C也间接的继承了A.

子类继承所有父类的成员变量和成员方法,但不继承父类的构造方法.在子类的构造方法中,可使用语句super(参数列表)调用父类的构造方法.

如果子类的构造方法中没有显性的调用父类的构造方法,也没有使用this关键字调用重载的其它构造方法,则在产生子类的实例对象时,系统默认调用父类无参数的构造方法.

举例说明:

子类的声明

1 class 子类名 extends父类名2 {3 成员变量4 成员函数5 }

注意:当子类的成员变量和父类的成员变量同名时,就产生了变量覆盖的问题,变量的覆盖与变量的类型无关只与变量名相关,当子类执行继承自父类的方法时,处理的是父类的成员变量

1 classcam02 {3 double size=0;4 voidprintsize()5 {6 System.out.println(size);7 }8 }9 class cam1 extendscam010 {11 double size=20;12 }13 public classcam214 {15 public static voidmain(String args[])16 {17 cam1 a=newcam1();18 System.out.println(a.size);19 a.printsize();20 }21 }

输出为

20.0

0.0

当子类的成员方法与父类的成员方法的原型相同时,就会出现函数覆盖的问题

函数的覆盖不仅与方法名相关,而且与其参数类型,顺序,数目,返回值相关

注意: 子类不能继承父类的private方法

1 classcam02 {3 intsize;4 void printsize(inta)5 {6 System.out.println("aaa");7 }8 }9 class cam1 extendscam010 {11 void printsize(doublea)12 {13 System.out.println("bbb");14 }15 }16 public classcam217 {18 public static voidmain(String args[])19 {20 cam1 a=newcam1();21 a.printsize(1);22 a.printsize(1.0);23 }24 }

输出为

aaa

bbb

因函数的参数类型不同,发生了重载

这里说下构造函数的继承

子类无条件继承父类不含参数的构造函数

子类先执行父类的构造函数,再执行自己的构造函数

子类可以通过在自己构造函数中使用super关键字来调用父类的构造函数,该语句必须出现在子类构造函数的第一个可执行语句

1 classcam02 {3 publiccam0()4 {5 System.out.println("aaa");6 }7 }8 class cam1 extendscam09 {10 publiccam1()11 {12 System.out.println("bbb");13 }14 public cam1(inti)15 {16 System.out.println("ccc");17 } www.2cto.com18 }19 public classcam220 {21 public static voidmain(String args[])22 {23 cam1 a=newcam1();24 cam1 b=new cam1(1);25 }26 }

输出为

aaa

bbb

aaa

ccc

即子类先执行父类的构造函数,再执行自己的构造函数。

原文:http://www.cnblogs.com/zzy9669/p/4014681.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值