Java重写
创建一个Person类
package 方法重写的理解;
public class Person {
String name;
int age;
public Person(){ }
public Person(String name,int age){
this.age=age;
this.name=name;
}
public void eat(){
System.out.println("吃饭");
}
public void walk(int distance){
System.out.println("走的距离是:"+distance);
}
}
再在同一个包里创建Student类
package 方法重写的理解;
public class Student extends Person{
String major;
public Student(){
}
public Student(String major){
this.major=major;
}
public void study(String major){
System.out.println("专业是:"+major);
}
//对父类的eat()方法重载
public void eat(){
System.out.println("人爱吃饭");
}
}
创建,main函数
package 方法重写的理解;
/*
方法的重写:
1.重写:子类继承父类,可以对父类中同名同参数的方法,进行覆盖
2.应用:重写完后,当创建子类对象后,通过子类对象调用父类中的同名同参数的方法时,实际执行的是子类重写的方法
3.重写规定:
方法的声明:权限修饰符 返回值类型 方法名(形参列表) throws 异常的类型{
//方法体
}
约定俗称:子类的叫重写方法,父类中的叫被重写方法
1、子类重写的方法的方法名和形参列表与父类被重写的方法的方法名和形参列表相同
2、子类重写的方法的权限修饰符不小于父类被重写的方法的权限修饰符
特殊情况:子类不能重写父类声明为private的方法
3、返回值类型:
父类被重写的方法的返回值类型是void,则子类重写的方法只能是void类型
父类被重写的方法返回值类型是A类型,则子类重写的方法类型也可以是A类或A类的子类
父类被重写的方法返回值类型是基本数据类型,则子类重写的方法类型也必须是相同的基本数据类型
4、子类重写的方法抛出的异常类型不大于父类被重写的方法抛出的异常类型
5、子类和父类同名同参数的方法要么都声明为非static(考虑重写),要么都声明为static(不考虑重写)
面试题:区分方法的重载(Overload)与重写(Override)
*/
public class Persontest {
public static void main(String[] args) {
Student s1=new Student();
s1.eat();
s1.walk(10);
s1.study("软件工程");
Person p1=new Person();
p1.eat();
}
}
至于最后结果请大家自己运行下并理解
PS:面试的那个题答案可以搜索菜鸟教程的java教程中的”Java 重写(Override)与重载(Overload)“去理解