重写.8

现在存在了类继承的关系,那么有可能出现子类定义了与父类相同的方法或者式属性的情况,那么这种情况统一都被称为重写
class Studenta extends Persona{
public void print() {//方法名称相同,参数类型及个数相同,返回值相同
System.out.println("Student类");
}
}
而当实例化的是子类对象,那么所调用的方法一定是被重写过的方法
如果说现在要想在子类之中调用已经被子类所重写过的方法,那么在方法前一定要使用“super方法()”的形式
class Persona{
public void print() {
System.out.println("Person类");
}
}
class Studenta extends Persona{
public void print() {//方法名称相同,参数类型及个数相同,返回值相同
super.print();
System.out.println("Student类");
}
}
有了继承的概念之后对于this和super的使用就非常重要了,
this:表示先从本类查找,如果本类没有则查找父类。
super:表示不查找本类,而直接找到父类,
如果是调用已经被子类重写过的父类方法时一定要加上“super”关键字
还有一个权限问题(),被子类重写的方法不能拥有有比父类更为严格的访问控制权限
访问权限::private<defalt(不写)<public.如果一个方法本身是public,那么在子类重写的时候变为了private,则称为权限严格了,那么
子类重写时,权限只能够写public。如果父类方法使用的是default权限,那么子类就可以使用default或者时public来表示
错误的重写:
class Persona{
public void print() {
System.out.println("Person类");
}
}
class Studenta extends Persona{
private void print() {//方法名称相同,参数类型及个数相同,返回值相同
super.print();
System.out.println("Student类");
}
}


面试题,请解释重载和重写的区别:
重载     重
1.英语 Overloading    Override
2.定义 方法名称相同,参数的类型及个数不同    方法名称相同,参数类型及个数相同,返回值相同
3.范围 发生在一个类之中    发生在继承关系之中
4.权限 没有权限要求    被重写的方法不能拥有比父类更为严格的范围控制权限
2.Overloading(重载)时能否改变返回值类型
在方法重载是返回值类型可以不同,但是从代码的开发来讲,返回值类型一定要保持相同




(一旦使用了private声明,那么是不会存在有重写这一概念的)
属性的重写:(没用)
当子类定义了和父类相同的属性名称的时候就被称为属性的重写
package derived;
class Personb{
String msg="hello";
}
class Studentb extends Personb{
int msg=1000;
public void print() {
//System.out.println(super.msg);
System.out.println(this.msg);
}
}
public class Zhongxie2 {


public static void main(String[] args) {
// TODO Auto-generated method stub
Studentb stu=new Studentb();
stu.print();
}


}
一般而言属性都要求封装,一旦属性被封装了,那么又何来重写?
(一旦使用了private声明,那么是不会存在有重写这一概念的)
总结:this和super的区别?
this:调用本类属性(this.属性),本类普通方法(this.方法),调用构造(this(),必须放在首行)
super:由子类调用父类属性(super.属性),调用父类非私有方法(super.方法()),调用父类构造(super(),必须放在子类构造首行)
当使用this和super调用构造的时候不能同时出现
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值