物件導向核心技術

2021-09-11 16:59:17 字數 3685 閱讀 6819

只支援單繼承、即乙個子類只能繼承乙個父類

child extends parents
重寫父類

重寫時不能降低方法的修飾許可權範圍,父類的protected可以改為public ,但不能private

parents a=new child();

//父類宣告,子類實現

child a=new parents();//這是錯誤的

super關鍵字

super.property;//呼叫父類屬性

super.method();//呼叫父類的方法

getclass()

返回物件執行時的class例項,getname取得類的名稱

system.out.println(b.getclass().getname());

=>xiaoxiong1.computer2

system.out.println(b.getclass());

=>class xiaoxiong1.computer2

system.out.println(new computer2());

=>xiaoxiong1.computer2@15db9742

引數個數不同、引數型別不同、引數順序不同

return (int) (a+b);

//輸出為int型

向上轉型:

將子類物件看作是父類物件

向下轉型:

將父類物件賦予子類物件,並強制轉換為子型別

parents a=new child();

child b=(child) a;

當在程式中執行向下轉型操作時,如果父類物件不是子類物件的例項,就會發生class否為castexception異常,所以在執行向下轉型之前需要養成個良好的習慣, 就是判斷父類物件是否為子類物件的例項。這個判斷通常使用instanceof操作符來完成

用它來判斷個例項物件是否屬於乙個類。

if (q instanceof square)
abstract關鍵字構造方法不能定義為抽象方法

public abstract class market
public class taobaomarket extends market 

}

inte***ce關鍵字

inte***ce drawtest
乙個類實現乙個介面用implements關鍵字

class parallelogramgleuseinte***ce implements drawtest 

}

class me implements ifather,imother;

//多個介面物件,用,隔開

介面中的方法都是抽象的,因此,當子類實現介面時,必須實現介面中的所有方法

多重繼承

如果是介面繼承介面,使用extends關鍵字

inte***ce intf1

inte***ce intf2 extends intf1

public class intf3 implements intf2

public void b()

}

(1)子類只能繼承乙個抽象類,但可以實現任意多個介面。

(2)乙個類要實現乙個介面必須實現介面中的所有方法,而抽象類不必。

(3)抽象類中的成員變數可以是各種型別,而介面中的成員變數只能是public static final的(4)介面中只能定義抽象方法,而抽象類中可以定義非抽象方法。

(5)抽象類中可以有靜態方法和靜態**塊等,介面中不可以。

(6)介面不能被例項化,沒有構造方法,但抽象類可以有構造方法。

不使用public修飾符設定類的許可權,則預設為default(預設)修飾,本類、本類所在包可見;其他包中的子類、其他包中的非子類不可見

import xiaoxiong.*;     //指定包中所有類在程式中可使用

import xiaoxiong.math //指定包中math類在程式中可使用

不能被繼承、不能改動、不能覆蓋

final double pi=3.14;
也不是恆定不變

private static random rand = new random();

private final int a1 = rand.nextint(10);

//每次執行隨機產生0~10之間的隨機數賦予定義為final的a1

private static final int a2 = rand.nextint(10);

//static 不變化

通常使用public static final修飾,這樣的常量只能在定義時被賦值

public class outclass

}

內部類可以使用外部類的成員

外部類不可以直接訪問內部成員變數

非內部類不能被宣告為private或protected訪問型別

使用this關鍵字獲取內部類與外部類的引用

public class thesamename 

}}

inte***ce outinte***ce2 

class outerclass3

} return new innerclass2("doit");

}}

return new a();
inte***ce outinte***ce2 

class outerclass4

};}}

(1)匿名類沒有構造方法;

(2)匿名類不能定義靜態的成員;

(3)匿名類不能用private. public. protected、 static. final. abstact 等修飾;

(4)只可以建立乙個匿名類例項。

不能使用外部類的非靜態成員,如果建立靜態內部類的物件,不需要建立其外部類的物件

public class staticinnerclass 

public static void main(string args)

}}

public class outputinnerclass extends classa.classb 

}class classa

}

在某個類繼承內部類時,必須硬性給予這個類乙個帶 多數的構造方法,並且該構造方法的引數必須是該內部類的外部類引用,就像例子中的classa a,同時在構造方法體中使用a。super()語句。

java物件導向核心技術

1 內部類 內部類可以節省編譯後的位元組碼,class檔案的大小,而在實現監聽的時候,採用內部類很容易實現,但使用內部類會導致結構不清晰。1 成員變數內部類 public class out private int i 0 private void g private class inner voi...

後台開發核心技術02物件導向C

簡介 本文章主要從物件導向程式設計的三大特點來敘述 封裝 繼承 多型 1 struct 和 class 在c 中唯一的區別就是預設的訪問許可權不同,struct預設訪問許可權是public的,而class是private的 2 乙個類中如果定義了全是預設引數的建構函式,那麼就不能再定義過載函式了。二...

PHP核心技術筆記(2) 物件導向的設計原則

物件導向設計的五大原則分別是單一職責原則 介面隔離原則 開放 封閉原則 替換原則 依賴倒置原則。單一職責有兩個含義 乙個是避免相同的職責分散到不同的累中,另乙個是避免乙個類承擔太多職責。為什麼遵守srp 可以減少類之間的耦合,提高類的復用性。srp在實際 中的應用 工廠模式 factory 根據不同...