方法重写:子类中出现了与父类中声明一样的方法。也叫方法覆盖。
应用:当子类需要父类的功能,而功能主体子类有自己特有的内容时,可以重写父类中的方法。
这样,即沿袭了父类的功能,又定义了子类特有的功能。
/*
满足“新手机is a 手机”,新手机可以继承手机
新手机的call功能,相比旧手机的,添加了它特有的内容。
*/
class Phone{
public void call(String name){
System.out.println("打电话给"+name);
}
}
class NewPhone extends Phone{
public void call(String name)){
//System.out.println("打电话给"+name);
super.call(name); //super关键字(代表父类空间的标识),访问父类的方法
System.out.println("播放音乐:贝加尔湖畔");
}
}
class ExtendsDemo3{
public static void main(String[] args){
NewPhone np= new NewPhone();
np.call("李健");
}
}
注意事项:
- 父类中私有方法不能被重写。因为父类私有方法子类根本无法继承。
- 子类重写父类时,访问权限不能更低。最好就一致。
- 父类静态方法,子类也必须通过静态方法进行重写。(其实这个算不上方法重写,但是现象确实如此。至于为什么算不上方法重写,见多态。)
方法重写override和方法重载overload的区别?
方法重载:同一个类中,出现的方法名相同,参数列表(参数个数或参数类型)不同。
方法重写:在子类中,出现和父类不一样的方法声明的方法。
this关键字和super关键字的区别?用法?
this关键字:代表对当前类的对象的引用。
super关键字:代表父类存储空间的引用。(可以理解为父类的引用,通过这个东西可以访问父类的成员)
用法:
访问成员变量:
this.成员变量 super.成员变量
访问构造方法:
this(...) super(...)
访问成员方法:
this.成员方法() super.成员方法()