1. 程式人生 > >Java程式設計思想學習(一)----物件導論中多型的理解

Java程式設計思想學習(一)----物件導論中多型的理解

1.1抽象過程

1)萬物皆物件。

2)程式是物件的集合,他們通過傳送訊息來告知彼此所要求做的。

3)每個物件都有自己的由其他物件所構成的儲存。

4)每個物件都擁有其型別。

5)某一特定型別的所有物件都可以接收同樣的訊息。

上面是書上總結的內容,具體程式碼如下:

//每個物件都有一個介面,介面有物件相關的功能和資料
public class Light {
    public void on() {
        System.out.println("開燈");
    }
    public void off() {
        System.out.println("關燈");
    }
    public void brighten() { System.out.println("調亮"); } public void dim() { System.out.println("調暗"); } }

 

1.6繼承

物件這種觀念,本身是十分方便的工具,通過概念可以將資料和功能封裝到一起。這些概念用關鍵詞class來表示,它們形成了程式語言中的基本單位。

引出問題:建立一個類之後,即使另一個新類與其具有相似的功能,還得重新建立一個新類。

型別不僅僅只是描述了作用與物件集合上的約束條件,同時還有與其他型別之間的關係。繼承使用基型別和匯出型別的概念表示了這種型別之間的相似性。一個基型別包含其所有匯出型別所共享的特性和行為。可以建立一個基礎型別來表示系統中某些物件的核心概念,從基型別中匯出其它型別,來表示此核心可以被實現的各種不同方式。

上面是書上總結的內容,具體程式碼如下:

/**
 * 幾何圖形
 * @author Administrator
 *
 */
public class Shape {

    private String color;
    public void draw() {
        System.out.println("幾何圖形尺寸");
    }
    public void erase() {
        System.out.println("幾何圖形擦除"); } public void move() { System.out.println("幾何圖形移動"); } public String getColor() { return color; } public void setColor(String color) { this.color = color; } }
/**
   *   圓形
 * @author Administrator
 *
 */
public class Circle extends Shape {

    @Override
    public void draw() {
        System.out.println("圓形尺寸");
    }

    @Override
    public void erase() {
        System.out.println("圓形擦除");
    }

}
/**
 * 正方形
 * @author Administrator
 *
 */
public class Square extends Shape {

    @Override
    public void draw() {
        System.out.println("正方形尺寸");
    }

    @Override
    public void erase() {
        System.out.println("正方形擦除");
    }

}
/**
 * 三角形
 * @author Administrator
 *
 */
public class Triangle extends Shape {

    @Override
    public void draw() {
        System.out.println("三角形尺寸");
    }

    @Override
    public void erase() {
        System.out.println("三角形擦除");
    }

    public void filpVertical() { } }

1.7伴隨多型的可互換物件

在處理型別的層次結構時,經常想把一個物件不當作他所屬的特定型別來對待,而是將其當作其基類的物件來對待。

上面是書上總結的內容,具體程式碼如下:

 
 

public class ShapeTest {
  @Test
  public void test1() {
    Shape shape = new Shape();
    Shape circle = new Circle();
    Square square = new Square();
    Triangle triangle = new Triangle();
    doSomething(shape);
    doSomething(circle);
    doSomething(square);
    doSomething(triangle);
  }
  
  public void doSomething(Shape shape){
    shape.draw();
    shape.move();
  }
/* 幾何圖形尺寸
幾何圖形移動
圓形尺寸
幾何圖形移動
正方形尺寸
幾何圖形移動
三角形尺寸
幾何圖形移動 */
}

面向物件程式設計有三大特性:封裝、繼承、多型。

參考資料:Java程式設計思想(四)