方法的重写
父类 Person
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;
}
void eat() {
System.out.println("吃饭");
}
public void walk(int distance) {
System.out.println("走路,走的距离是" + distance + "公里");
show();
eat();
}
private void show() {
System.out.println("我是一个人");
}
public Object info() {
return null;
}
public double info1() {
return 1.0;
}
}
子类 student
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方法 进行了重写
public void eat() {
System.out.println("学生应该多吃有营养的食物");
}
public void show() {
System.out.println("我是一个学生");
}
public String info() {
return null;
}
@Override
public void walk(int distance)
{
System.out.println("重写");
}
}
/*
* 这是错误的
* public int info1() {
return 1;
}
} */
测试类
package com.atguigu.java1;
/*
* 方法的重写 override overwrite
*
* 1.重写 : 子类继承父类以后,可以对父类中同名 同参数的方法,进行覆盖操作
*
* 2.应用 : 重写以后,当创建子类对象时,通过子类对象调用父类中的同名同参数的方法时,实际执行的是子类重写父类的方法
*
* 3.重写的规定:
* 方法的声明 : 权限修饰符 返回值类型 方法名(形参列表) throws 异常的类型{ 方法体 }
* 约定俗称:子类中的叫重写的方法 父类中叫被重写的方法
* ①子类重写的方法 的 方法名和形参列表 与 父类被重写的方法名和形参列表相同
* ②子类重写的方法 的 权限修饰符 不小于 父类被重写的方法的权限修饰符
* >特殊情况 : 子类不能重写 父类中 private 权限的方法
* ③返回值类型
* >父类被重写的方法的返回值类型是void , 则子类重写的方法的返回值类型只能是void
* >父类被重写的方法的返回值类型是 A 类型 , 则子类重写的方法的返回值类型可以A类 或 A类的子类 比如父Object 子String
* >父类被重写的方法的返回值类型是 基本数据类型 则子类重写的方法的返回值类型必须是相同的基本数据类型 double = double
* ④子类重写的方法 抛出的异常的类型 不大于 父类被重写的方法抛出的异常类型(具体放到异常处理的位置讲)
* 面试题 : 区分方法的重载 与 重写
* ****************************************************************************************************
* 子类 和 父类中的同名同参数的方法 要么都声明为非static的(考虑重写) 要么都声明为static的(不是重写)
*
*/
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();
}
}
本文讲解了如何在Java中实现方法的重写,通过实例展示Person和Student类的关系,演示了如何重写父类的eat和walk方法,并讨论了重写规则。
176

被折叠的 条评论
为什么被折叠?



