方法重载用于执行参数不同时不同的方法,是编译时多态,重写是改变从父类那继承的方法
package com.example.hibernate.pro4; import com.example.hibernate.pro3.DeviceService; /** * Hospital * @Remark:医院的类型 */ public class Hospital { /** * @param patient 病人 * @param dept 科室 */ public void register(Patient patient, Department dept){ System.out.println("开始挂号到对应的科室:" + dept.name); dept.treatment(patient); } public static void main(String[] args) { //创建医院对象 Hospital hs = new Hospital(); //骨科 Orthopaedics op = new Orthopaedics(); //Orthopaedics op; //外科 //Surgery sg = new Surgery(); Surgery sg; //病人 //Patient patient = new Patient(); Patient patient; //挂号 hs.register(patient, sg); } /** * 病人 */ class Patient{ public int id; public String name; public String gender; public int age; public float health; } /** * 科室 */ class Department{ public int id; public String name; public String intro; //接收病人的方法 public void treatment(Patient patient){ System.out.println(this.name + "接收病人,开始治疗"); } } public class Orthopaedics extends Department{ public void treatment(Patient patient){ System.out.println(this.name + "骨科接收到病人,开始治疗"); } } class Surgery extends Department{ public void treatment(Patient patient){ System.out.println(this.name + "外科接收到病人,开始治疗"); } } }
Orthopaedics op = new Orthopaedics();
报错了
子类继承父类,方法名称相同,参数名称个数和类型相同,执行的结果不同,方法的重写。
根据传递数据的不同,执行不同的行为~
public String getDevice(){} //名称相同,空参数方法
public String getDevice(String notes){} //名称相同,有参数
public String getDevice(String offices,String notes){} //名称相同,参数个数不同
方法名称返回类型相同,但参数个数不同,参数类型不一致,是方法的重载
继承:方法重载和方法重写
方法重载:方法名相同,参数不同。
方法重写:子类重新实现父类方法,也成为方法覆盖。