方法的過載和重寫的區別
阿新 • • 發佈:2019-01-03
方法過載:指同一個類中多個方法,
方法名相同 //與返回值、訪問修飾符無關
引數列表不同
方法重寫:繼承父類的方法,講繼承的方法重新改寫(不在同一個類中)
例如:一個工程類,有軟體工程師和測試工程師
工程類Engineer.java
public class Engineer { //共有的屬性和方法 // private 私有化的訪問修飾符 就是子類也不能繼承 //protected 訪問修飾符子類可以繼承 protected int id; protected String name; protected String entertime; public Engineer(int id, String name, String entertime) { super(); this.id = id; this.name = name; this.entertime = entertime; } public void showinfo(){ System.out.print("編號:"+id+",姓名:"+name+",入職時間:"+entertime); } }
軟體工程師類SoftEngineer.java
public class SoftEngineer extends Engineer { //獨有的屬性和方法 private String type;//語言型別 public SoftEngineer(int id, String name, String entertime,String type) { super(id, name, entertime); // TODO Auto-generated constructor stub this.type = type; } public void coding(){ System.out.println("正在程式設計。"); } @Override public void showinfo() { // TODO Auto-generated method stub super.showinfo(); System.out.println(",語言型別是:"+type); } }
測試工程師類TestEngineer.java
public class TestEngineer extends Engineer { private String level; public TestEngineer(int id, String name, String entertime,String level) { super(id, name, entertime); // TODO Auto-generated constructor stub this.level = level; } public void test(){ System.out.println("正在測試。。"); } /** * 方法重寫(呼叫(重寫)父類中有的方法) * 的預設行為是呼叫父類方法內容 * 作用:可以在子類中修改父類的內容 */ @Override//@:註解識別符號 //重寫 public void showinfo() { // TODO Auto-generated method stub super.showinfo(); System.out.println(",等級"+level); } }
測試類Test.java
public static void main(String[] args) {
// TODO Auto-generated method stub
//呼叫父類中定義的方法結果:
//1、如果子類沒有重寫父類的方法,呼叫的就是父類的實現
//如果子類重寫了父類的方法,呼叫的就是子類中的實現
SoftEngineer soft = new SoftEngineer(1, "李華", "2017-05-21", "java");
soft.showinfo();
soft.coding();
TestEngineer test = new TestEngineer(2, "王娜", "2017-08-08", "c++");
test.showinfo();
test.test();
}
}