一、Java重写的定义
对父类的函数进行重新定义,且重写发生在父类与子类之间,子类对从父类继承来的方法的实现细节进行修改,即不能改变方法的返回值和方法的参数列表,仅仅对方法内部的细节进行修改。
二、Java重写的意义
1、为了更准确的描述子类的行为特征
2、如果子类型重写了父类型的同名方法,那么只知道父类型的定义就可以调用子类型的方法了
三、Java重写注意事项
1、重写后子类的访问权限(public protected默认的 private)要么与父类相同,要么大于父类方法
2、父类中final修饰的方法,子类不允许重写
3、父类中static修饰的方法,子类不允许重写
4、子类重写后的方法不能添加static修饰
5、重写后的方法,子类方法名必须与父类方法名相同,参数列表除了名字不被限制以外,其他必须相同
//父类构造方法
Object eat(String name){ //Object 为返回值
}
//子类构造方法
Public String eat(String name) {
}
//调用时为字符串,需要对括号里变量加双引号
//参数列表中除了名字不被限制以外,String必须一致
6、返回值:
(1)如果父类方法返回值为void或基本数据类型,则重写后的方法必须与父类相同
public class Father{ //父类
public void singing() {
System.out.println("正在唱古典音乐");
}
}
public class Son extends Father{ //子类
public void singing() {
System.out.println("正在唱嘻哈音乐");
}
}
}
(2)如果父类的方法返回值为引用类型,则重写之后的方法返回值要么与父类一致,要么返回值是父类的子集
//父类
Object eat(String name) { //若为private 则子类无法继承
System.out.println("正在用筷子吃饭......");
return 0;
}
//子类
@Override
String eat(String name) {
super.eat(name);//调用父类方法,有效代码第一行
System.out.println("正在用刀叉吃饭......");
return "";
}