一、概述
/*
方法的重写:Override*当子类继承了父类的方法时,但是父类的方法体不适用于子类了,那么子类可以选择进行“重写overwrite”。方法 = 方法签名/方法头 + 方法体重写有要求:(1)方法名:必须和父类被重写的方法名“相同”(2)形参列表:必须和父类被重写的形参列表“相同”(3)返回值类型:基本数据类型和void:要求与父类被重写的方法的返回值类型“相同”引用数据类型:要求子类重写的方法的返回值类型 <= 父类被重写的方法的返回值类型例如:子类方法的返回值类型是Student,父类被重写方法的返回值类型是Student子类方法的返回值类型是Student,父类被重写方法的返回值类型是Person子类方法的返回值类型是Person,父类被重写方法的返回值类型是Student(错误的)(4)修饰符①权限修饰符:子类重写的方法的权限修饰符的可见性范围 >= 父类被重写方法的权限修饰符的可见性范围例如:子类方法的权限修饰符是public,父类被重写方法的权限修饰符public子类方法的权限修饰符是public,父类被重写方法的权限修饰符protected②其他修饰符(后面讲)
*/
啥也不说了,贴代码,便能好好体会到了(坏笑)
package .atguigu.test02;/** 方法的重写:Override*当子类继承了父类的方法时,但是父类的方法体不适用于子类了,那么子类可以选择进行“重写overwrite”。* 方法 = 方法签名/方法头 + 方法体* 重写有要求:* (1)方法名:必须和父类被重写的方法名“相同”* (2)形参列表:必须和父类被重写的形参列表“相同”* (3)返回值类型:* 基本数据类型和void:要求与父类被重写的方法的返回值类型“相同”* 引用数据类型:要求子类重写的方法的返回值类型 <= 父类被重写的方法的返回值类型* 例如:* 子类方法的返回值类型是Student,父类被重写方法的返回值类型是Student* 子类方法的返回值类型是Student,父类被重写方法的返回值类型是Person* 子类方法的返回值类型是Person,父类被重写方法的返回值类型是Student(错误的)* (4)修饰符* ①权限修饰符:子类重写的方法的权限修饰符的可见性范围 >= 父类被重写方法的权限修饰符的可见性范围* 例如:* 子类方法的权限修饰符是public,父类被重写方法的权限修饰符public* 子类方法的权限修饰符是public,父类被重写方法的权限修饰符protected* ②其他修饰符(后面讲)* */
public class TestOverride {public static void main(String[] args) {Manager m= new Manager();m.setName("张无忌");System.out.println(m.getSalary());//第2个例子Manager m1= new Manager("张无忌2",8000,2000);System.out.println(m1.getInfo());}
}
//员工
class Employee{//属性列表private String name;private double salary;//构造器列表public Employee(){}public Employee(String name,double salary){this.name=name;this.salary=salary;}//get/setpublic String getName(){return this.name;}public void setName(String name){this.name=name;}//------------------------public double getSalary(){return this.salary;}public void setSalary(double salary){this.salary=salary;}//方法public String getInfo(){return "姓名:"+name+" ,薪资:"+salary;}
}
//经理
class Manager extends Employee{//子类的属性列表private double bonus; //奖金//子类的构造器列表public Manager() {}public Manager(String name,double salary,double bonus) {super(name,salary);//如果这里不写super(name,salary)的话,它就会报错,找不到父类的有参构造this.bonus = bonus;}//get/setpublic double getBonus() {return bonus;}public void setBonus(double bonus) {this.bonus = bonus;}//重点来了:重写父类的getInfo()//重写父类的getInfo()public String getInfo(){//由于父类的name和salary属性是私有的,不能在子类中直接使用的return "姓名:"+getName()+" 薪资:"+getSalary()+" 奖金:"+ bonus;}
}# 二、总结## 整理重写的要求:
(1)方法名:相同
(2)形参列表:相同
(3)返回值类型:基本数据类型与void:相同引用数据类型:<=(4)修饰符权限修饰符:>=其他修饰符:不能是final,private,static
(5)抛出的异常类型:<=
更多推荐
重写,方法,Override
发布评论