package com.atguigu.java1;
/*
* ·方法的重写(体现为多态性,重载不体现为多态性)
* 1.重写:子类继承父类之后,可以对父类中同名同参数的方法,进行覆盖操纵
* 2.应用:重写以后,当创建子类对象以后,通过子类对象调用子父类同名同参数的方法时,
* 实际执行的是子类重写父类的方法
*
* 3.重写的规定:
* 方法声明:权限修饰符 返回值类型方法名(形参列表) throws 异常的类型{
* 方法体
* }
* 约定俗称:子类中叫重写的方法,父类中叫被重写的方法
* ①子类重写的方法的方法名和形参列表和父类被重写的方法的方法名和形参列表相同
* ②子类重写的方法的权限修饰符不小于父类被重写的方法的权限修饰符
* 特殊情况:子类中不能重写父类中为private的方法,若两者同名的话,则是子类自己写的,与父类无关
* ③返回值类型:
* >父类中被重写的方法的返回值类型是void,则子类中重写的方法的返回值类型只能是void
* >父类中被重写的方法的返回值类型是A类,则子类中重写的方法的返回值类型是A类或A类的子类
* >父类中被重写的方法的返回值类型是基本数据类型,则子类中重写的方法的返回值类型只能是相同的基本数据类型
* >子类中重写的方法的抛出异常类型不大于父类中被重写的方法的抛出的异常类型
* ************************************
* 子类和父类中的同名同参数的方法要么都声明为非static的(考虑重写),要么都声明为static(不是重写)
*
*/
public class PersonTest {
public static void main(String[] args) {
Student s = new Student("计算机科学与技术");
s.eat();
s.walk(10);
s.study();
}
}
package com.atguigu.java1;
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.atguigu.java1;
public class Student extends Person {
String major;
public Student() {
}
public Student(String major) {
this.major = major;
}
public void study() {
System.out.println("学习,专业是"+major);
}
// 对父类的eat方法重写
@Override
public void eat() {
// TODO Auto-generated method stub
super.eat();
System.out.println("学生吃饭");
}
}
java中方法的重写
最新推荐文章于 2022-03-22 20:59:17 发布