1. 程式人生 > 實用技巧 >Java面向物件-方法重寫(override)

Java面向物件-方法重寫(override)

方法重寫(override)
*1.重寫:子類繼承父類以後,可以對父類中同名同參數的方法進行覆蓋操作
*2.應用:重寫以後,當建立子類物件以後,通過子類物件呼叫子父類同名同參數的方法時,實際執行的是子類重寫父類的方法
*3.重寫的規定:
* 方法的宣告:許可權修飾符 放回值型別 方法名 (形參列表)throws 異常型別
* {
* //方法體
* }
* 約定俗成:子類中的叫 重寫的方法,父類中的叫 被重寫的方法
* ①.子類重寫的方法的方法名和形參列表與父類被重寫的方法名和形參列表相同
* ②.子類重寫的方法的許可權修飾符不小於父類被重寫的方法的修飾符
* 子類不能重寫宣告為private的父類方法
* ③.返回值型別:
* (1)、如果父類中被重寫的方法返回值是void,則子類重寫的方法返回值也是void
* (2)、父類被重寫的方法的返回值型別是A型別,則子類重寫的方法的返回值型別可以是A類或A類的子類
* (3)、父類被重寫的方法的返回值型別是基本資料型別,則子類重寫的方法的返回值型別必須是相同的基本資料型別
* ④.子類重寫的方法丟擲的異常型別不大於父類被重寫的方法丟擲的異常型別
*
* ***********************************************************************
* 子類和父類中同名同參數的方法要麼都宣告為非靜態的(考慮重寫),要麼都宣告為靜態的(不是重寫)

public class OverrideTest {
    public static void main(String[] args) {
        Person1 person1=new Person1();
        Student1 student1=new Student1();
        person1.eat();
        student1.eat();
    }
}

class Person1{ String name; int age; public Person1() { } public Person1(String name, int age) { this.name = name; this.age = age; } public void eat() { System.out.println("人在吃飯"); } } class Student1 extends Person1{ public Student1() { } //對父類中eat()方法進行重寫 @Override public void eat() { System.out.println("學生在吃飯"); } }