方法的重写:
方法的重写(override / overwrite)
*
* 1.重写:子类继承父类以后,可以对父类中同名同参数的方法,进行覆盖操作
*
* 2.应用:重写以后,当创建子类对象以后,通过子类对象调用父类中的同名参数
* 方法时,实际执行的是子类重写父类的方法
*
* 3.重写的规定:
* 方法的声明:权限修饰符 返回值类型 方法名(形参列表){
* //方法体
* }
* 约定俗成:子类中叫重写的方法,父类中的叫被重写的方法
* ①子类重写的方法的方法名和形参列表与父类被重写的方法的方法名和形参列表相同
* ②子类重写的方法的权限修饰符不小于父类被重写的方法的权限修饰符
* >特殊情况:子类不能重写父类中声明为private权限的方法
* ③返回值类型:
* >父类被重写的方法返回值类型是void,则子类重写的方法的返回值类型只能是void
* >父类被重写的方法返回值类型是A类型,则子类重写的方法的返回值类型可以是A类或A类的子类
* >父类被重写的方法返回值类型是基本数据类型,则子类重写的方法的返回值类型必须是相同的基本数据类型
④子类重写的方法抛出的异常类型不大于父类被重写的方法抛出的异常类型
* *******************************************************************************************************
* 子类和父类中的同名参数的方法要么都声明为非static(考虑重写),要么都声明为static
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 + "公里");
show();
}
private void show() {
System.out.println("我是一个人");
}
}
public class Student extends Person{
String major;
public Student() {
}
public Student(String major) {
this.major = major;
}
public void study() {
System.out.println("学习。专业是:" + major);
}
public void eat() {
System.out.println("学生应该多吃有营养的食物");
}
public void show() {
System.out.println("我是一个学生");
}
public String info() {
return null;
}
public void walk(int distance) {
System.out.println("重写的方法");
}
}
public class PersonTest {
public static void main(String[] args) {
Student s = new Student();
s.eat();
s.walk(10);
System.out.println("********************");
s.study();
Person p1 = new Person();
p1.eat();
}
}