方法的重写
重写
子类继承父类后,可以对父类中同名同参数的方法,进行覆盖操作。
应用
重写以后,当创建子类对象以后,通过子类对象调用子父类中的同名同名同参数的方法时,实际执行的是子类重写父类的方法。
规定
方法的声明: 权限修饰符 返回值类型 方法名(形参列表){
// 方法体
}
-
子类重写的方法名和形参列表与父类被重写的方法的方法名和形参列表相同
-
子类重写的权限修饰符不小于父类的权限修饰符。
-
注意:子类不能重写父类中private的方法。
-
父类被重写的方法的返回值类型是void,则子类重写的方法的返回值类型也必须是void;父类被重写的方法的返回值类型是A类型,则子类重写的方法的返回值类型可以是A类,也可以是A的子类。
代码
package com.yicurtain.methodWrite;
public class Person {
String name;
int age;
public Person(){
}
public Person(String name,int age){
this.name=name;
this.age=age;
}
public void eat(){
System.out.println("吃饭");
}
public void walk(int distance){
System.out.println("今天走了"+distance+"公里");
}
}
package com.yicurtain.methodWrite;
import com.yicurtain.methodWrite.Person;
public class Student extends Person {
String major;
public Student(){
}
public Student(String major){
this.major=major;
}
public void study(){
System.out.println("学习的专业是"+major);
}
//对父类eat()进行重写
public void eat(){
System.out.println("学生应该多吃有营养的食物");
}
}
package com.yicurtain.methodWrite;
public class Test {
public static void main(String[] args) {
Student s = new Student("计算机科学与技术");
s.eat();
s.walk(10);
s.study();
}
}