ch07 物件導向進階觀念

7-1 Java 套件

7-1-1 package 關鍵字的使用

參考 page 7-3 程式範例 Book.java

package books;
public class Book {
	public void show() {
		System.out.println("Book 物件資訊");
	}
}

參考 page 7-3 程式範例 ComputerBook.java

package books.computer;
public class ComputerBook {
	public void show() {
		System.out.println("ComputerBook 物件資訊");
	}
}

7-1-2 import 關鍵字的使用

package books.execute;
import books.Book;
import books.computer.ComputerBook;
public class EX01_Execute {
	public static void main(String[] args) {
		Book book = new Book();
		book.show();
		
		ComputerBook cbook = new ComputerBook();
		cbook.show();
	}
}

7-2 編譯 Java 專案套件

javac books\execute\EX01_Execute.java
java books.execute.EX01_Execute

7-2-1 指定類別檔的存放目錄

javac -d obj books\computer\ComputerBook.java

7-2-2 classpath 的設定

java -cp e:\tt\src;. books.execute.EX01_Execute

7-2-3 JAR 檔的使用

java -cp e:\tt\src\books.jar;. books.execute.EX01_Execute

7-3 存取修飾詞的使用

參考 page 7-8 表 7-1 各個存取修飾詞可使用的對象

7-3-1 public 修飾詞

public 完全開放給其他類別

7-3-2 protected 修飾詞

相同套件 package 或 子類別

7-3-3 default 修飾詞

相同套件 package

7-3-4 private 修飾詞

不開放給其他類別

7-4 封裝

private, get, set

7-5 抽象類別

abstract class Shape

abstract public void show();

參考 page 7-16 程式範例 AbstractClass.java

7-6 介面

page 7-18 介面重要規則

  1. 介面方法會自動加上 public 和 abstract 修飾詞
  2. 介面本身無法 new instance
  3. 子類別要實作父介面的抽象方法,否則也必須定義成抽象類別
  4. 子介面只可繼承父介面,不可以實作父介面方法
  5. 介面的屬性會自動加上 final 和 public 修飾詞
  6. 介面沒有建構子 constractor
interface Book{
	void show();  	
}

class ComputerBook implements Book

參考 page 7-20 程式範例 Interface.java

7-7 Java 的繼承與實作

interface IA {}
interface IB {}
interface IC {}

class CA {}
class CB {}
class CC {}

// class CX extends CA, CB {}
class CB implements IA, IB {};
// class CY extends IA {}
interface IX extends IA, IB {}
//interface IY extends CA {}
// interface IZ implements IA {}

7-8 物件的轉型

參考 page 7-24 程式範例 Casting.java

參考 page 7-26 程式範例 Instanceof.java

7-9 多型

參考 page 7- 程式範例 Polymorphism.java