1. 程式人生 > 其它 >Java中類與類之間的關係

Java中類與類之間的關係

1.呼叫

下面是不同的類呼叫不同的類是否合法的總結表格。

被呼叫類的型別 同一類 同一包 不同類的子類 不同步的非子類
Private類      
Default類    
Protected類  
Public類

呼叫關係下,兩個類都是獨立的類,兩個類之間沒有依附關係,只是,操作類與被呼叫類不在一個包時需要使用import語句。在操作類中建立被呼叫類的物件,就能呼叫其中的方法還有變數(private類的成員變數和方法需要使用get和set方法)。

2.繼承

繼承關係下,子類對父類有依附關係,如果父類發生變化,子類實現也不得不跟著變化。繼承關係下,Java支援多層繼承,但不支援多繼承,如:

public class Son extends Father,mother;

這是多繼承,即一個子類同時繼承多個父類,是不正確的。

 

public class Son extends Father;
public class Father extends Granddad;

這是多層繼承,即子類繼承的父類,可以是其他類的子類。

 

繼承提高程式碼的複用性和維護性但使類的耦合性增強,削弱了子類的獨立性。

3.類套類

巢狀類:在類中定義的類,巢狀類包括靜態巢狀類和內部類

靜態巢狀類:用static修飾的類,在本質上是個頂級類,對比一般的頂級類,靜態巢狀類可以直接訪問外部類除例項成員以外的其他成員(例項成員必須先建立外部物件才能呼叫)

內部類:沒有用static修飾的類,可以直接訪問外部類的成員,外部類要訪問內部類的成員,必須建立物件,包括成員內部類和區域性內部類

成員內部類:定義在類的成員位置

區域性內部類:定義在類的區域性位置(程式碼塊中),不能定義除編譯時常量以外的任何static成員,可以直接訪問外部類中所有成員

匿名內部類:定義在方法裡面的區域性內部類,本質上是一個繼承了該類或者實現了該介面的子類匿名物件

類套類的關係下,除靜態巢狀類以外,類與類的耦合性更強,巢狀類的獨立性更弱,但是提高了一些類的隱蔽性,增加了一些訪問特權。