重写(Override):在继承关系中,方法的名称一样,参数列表也一样,也称,方法的覆盖
重载(Overload):方法的名词一样,参数列表不一样
方法的覆盖重写特点,创建的是子类对象,则优先用子类方法
方法覆盖的注意事项:
1、必须保证父子类之间方法的名词相同,参数列表也相同
@Override,写在方法前面,用来检测是不是有效的正确覆盖重写,这个注解就算不写,只要满足要求,也是正确的方法覆盖重写。
2、子类方法的返回值必须小于等于父类方法的返回值范围
Object类是所有类的公共最高父类,java.lang.String就是Object的子类
3、子类方法的权限必须大于等于父类方法的权限修饰符
public protected (default) private, (default)代表什么都不写
public class Fu {
public Object method() {
return null;
}
}
public class Zi extends Fu{
@Override
public String method() {
return null;
}
}
//老款手机
public class Phone {
public void call() {
System.out.println("打电话");
}
public void send() {
System.out.println("发短信");
}
public void show() {
System.out.println("显示号码");
}
}
//定义一个新款手机,使用老手机作为父类
public class NewPhone extends Phone {
@Override
public void show() {
// 把父类的show方法拿过来重复利用
super.show();
//自己子类再添加更多内容
System.out.println("显示姓名");
System.out.println("显示头像");
}
}
public class PhoneDemo {
public static void main(String[] args) {
Phone phone = new Phone();
phone.call();
phone.send();
phone.show();
NewPhone newPhone = new NewPhone();
newPhone.call();
newPhone.send();
newPhone.show();
}
}