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程式設計思想(四)