1. 程式人生 > 其它 >10-Java方法重寫

10-Java方法重寫

10.1 方法重寫基本介紹

方法重寫也叫方法覆蓋,就是子類有一個方法和父類的某個方法的名稱、返回型別、形參都是一樣,那麼這個子類的方法覆蓋了父類的方法。

10.2 方法重寫快速入門



這裡寫了一個Animal類和Dog類,Dog類繼承了Animal類,他們裡面有一個方法是一摸一樣的。

10.3 方法重寫注意事項和使用細節

  1. 子類的方法的引數、方法名稱要和父類的引數和方法名稱完全一樣。
  2. 子類方法的返回型別和父類方法的返回型別要一樣,或者是父類返回型別的子類。如:父類的返回型別是Object,子類方法的返回型別是String
  3. 子類方法不能縮小父類方法的訪問許可權。

10.4 方法重寫練習

  1. 編寫一個Person類,包括屬性private(name,age),構造器、方法say(返回子喔介紹的字串)。
  2. 編寫一個Student類,繼承Person類,增加private id、score,以及構造器,定義say()方法(返回自我介紹的資訊)。
  3. 在main中,分別建立Person和Student物件,呼叫say()方法輸出自我介紹。
package com.edu.override_;

public class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    public String say() {
        return "name=" + name + "age= " +age;
    }
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}
package com.edu.override_;

public class Student extends Person {
    private int id;
    private double score;
    public String say() {
        return super.say() + "id=" + id + "score=" +score;
    }

    public Student(String name, int age, int id, double score) {
        super(name, age);
        this.id = id;
        this.score = score;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public double getScore() {
        return score;
    }

    public void setScore(double score) {
        this.score = score;
    }
}
package com.edu.override_;

import javax.swing.plaf.synth.SynthOptionPaneUI;

public class OverrideExercise {
    public static void main(String[] args) {
        Person person = new Person("jack", 30);
        System.out.println(person.say());
        Student student = new Student("smith",19,123456 ,99.8);
        System.out.println(student.say());
    }
}