java 继承 覆盖_java继承覆盖

本文详细介绍了Java中的继承和覆盖概念。包括构造函数的三种调用情况,方法覆盖的规则,以及成员变量覆盖的注意事项。在多态调用时,如果方法被子类覆盖,将使用子类的方法;如果成员变量被覆盖,父类方法使用父类的成员,子类方法使用子类的成员。此外,还强调了每个类使用成员变量时相当于在前面加上`this`指针。
摘要由CSDN通过智能技术生成

java的继承与覆盖基本是java笔试中常出的题,也比较绕,这里是对java的继承覆盖做一个总结

1.构造函数:

当子类继承一个父类时,构造子类时需要调用父类的构造函数,存在三种情况

(1).父类无构造函数或者一个无参数构造函数,子类若无构造函数或者有无参数构造函数,子类构造函数中不需要显式调用父类的构造函数,系统会自动在调用子类构造函数前调用父类的构造函数

(2).父类只有有参数构造函数,子类在构造方法中必须要显示调用父类的构造函数,否则编译出错

(3).父类既有无参数构造函数,也有有参构造函数,子类可以不在构造方法中调用父类的构造函数,这时使用的是父类的无参数构造函数

2.方法覆盖:

(1)子类覆盖父类的方法,必须有同样的参数返回类型,否则编译不能通过

(2)子类覆盖父类的方法,在jdk1.5后,参数返回类可以是父类方法返回类的子类

(3)子类覆盖父类方法,可以修改方法作用域修饰符,但只能把方法的作用域放大,而不能降低访问权限

(4)子类方法能够访问父类的protected作用域成员,不能够访问默认的作用域成员

(5)子类的静态方法不能隐藏同名的父类实例方法

(6)java与C++一样,继承的方法具有多态性

3.成员覆盖:

(1)当子类覆盖父类的成员变量时,父类方法使用的是父类的成员变量,子类方法使用的是子类的成员变量

这个听起来很容易理解的一回事,但是实际使用过程中很多人容易搞混:尤其是在多态的时候,调用一个被继承的方法,该方法访问是一个被覆盖的成员m,那么方法中到底是访问了父类的成员还是子类的成员m?结论是,若实际调用的是父类的方法,就使用了父类的该成员m,若实际调用的是子类的方法,就使用子类的成员m,记住一句,每个类使用成员都相当于在前面加了 一个this指针。

我在论坛上看到下面例子,理解上面,你就能够很好得出答案了:

classSuperClass {

privateintnumber;

publicSuperClass() {

this.number = 0;

}

publicSuperClass(intnumber) {

this.number = number;

}

publicintgetNumber() {

number++;

returnnumber;

}

}

classSubClass1 extends SuperClass {

publicSubClass1(intnumber) {

super(number);

}

}

classSubClass2 extends SuperClass {

privateintnumber;

publicSubClass2(intnumber) {

super(number);

}

}

publicclassSubClass extends SuperClass {

privateintnumber;

publicSubClass(intnumber) {

super(number);

}

publicintgetNumber() {

number++;

returnnumber;

}

publicstaticvoidmain(String[] args) {

SuperClass s = newSubClass(20);

SuperClass s1 = newSubClass1(20);

SuperClass s2 = newSubClass2(20);

System.out.println(s.getNumber());

System.out.println(s1.getNumber());

System.out.println(s2.getNumber());

//结论一:多态时,当子类覆盖了父类的方法,使用子类覆盖的方法

//结论二:当子类覆盖父类的成员变量时,父类方法使用的是父类的成员变量,子类方法使用的是子类的成员变量

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值