一個例子理解java面向對象的機制

   //定義Gun類ide

public abstract class Gun {函數

    protected String name;測試

    // 帶參數的構造方法,特殊的方法,名字必須與類名相同ui

    public Gun() {this

    public Gun(String name) {spa

        this.name = name;orm

    // 構造抽象方法,並在子類中繼承和定義。繼承

    abstract void sound();get

    public String getName() {it

        return name;

    public void setName(String name) {

        this.name = name;

    //Carbine繼承自Gun

public class Carbine extends Gun {

    //帶參數的構造方法,特殊的方法,名字必須與類名相同

    public Carbine(String name) {

        this.name = name;

    //Gun類下不一樣的子類擁有同名的sound()方法,可是內容不一樣,在調用sound()方法時會根據具體的Gun而自動調用相應的方法。

    //這用到了Java的多態性。

    void sound() {

        // TODO Auto-generated method stub

        System.out.println("DaDaDa!");

    //Rifle繼承自Gun

public class Rifle extends Gun {

    //帶參數的構造方法,是特殊的方法,名字必須與類名相同

    public Rifle(String name) {

        this.name = name;

    //Gun類下不一樣的子類擁有同名的sound()方法,可是內容不一樣,在調用sound()方法時會根據具體的Gun而自動調用相應的方法。

    //這用到了Java的多態性。

    void sound() {

        // TODO Auto-generated method stub

        System.out.println("Peng! Peng! Peng!");

    //定義Person類

public class Person {

    private String name;

    public String getName() {

        return name;

    public void setName(String name) {

        this.name = name;

    // 體現多態性。

    public void shoot(Person p, Gun g) {

        System.out.println(this.name + " shoot\t" + p.getName() + " using a "

                + g.getName());

        g.sound();

    //在main()函數中測試

public class Test http://www.huiyi8.com/jiaoben/

    public static void main(String[] args) 網頁特效代碼

        // TODO Auto-generated method stub

        Person p1 = new Person();

        Person p2 = new Person();

        p1.setName("XiaoWang");

        p2.setName("XiaoLi");

        Rifle r = new Rifle("rifle");

        Carbine c = new Carbine("carbine");

        // 將方法的調用和實現分離,已達到封裝的效果。

        p1.shoot(p2, r);

        p1.shoot(p2, c);

相關文章
相關標籤/搜索