日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java使用继承的语法是,Java基础语法八 继承

發布時間:2025/3/8 java 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java使用继承的语法是,Java基础语法八 继承 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、超類和子類

超類和子類

父類與子類

多態:

一個對象變量可以指示多種實際類型的現象稱為多態

一個變量可以引用父類對象,也可以引用其子類對象,這就是多態。

不能將一個超類的引用賦給子類變量,因為調用子類方法時可能發生運行錯誤

子類引用可以賦給超類引用

動態綁定:

在運行時能夠自動地選擇哪個方法的現象稱為動態綁定

是一個非常重要的特性,無需對現存的代碼進行修改,就可以對程序進行擴展。

阻止繼承:final類和方法

將方法和類聲明為final主要目的是:確保它們不會在子類中改變語句

強制類型轉換

只能在繼承層次內進行類型轉換。

在將超類轉換成子類之前,應該使用instanceof進行檢查。

抽象類

使用abstract關鍵字,這樣就完全不需實現這個方法。

為了提高程序清晰度,包含一個或多個抽象方法的類本身必須被聲明為抽象的。

除了抽象方法外,抽象類還可以包含具體數據和具體方法。

盡量將通用的域和方法(不管是否是抽象的)放在超類(不管是否是抽象類)中

擴展抽象類

1 子類中定義部分抽象方法或抽象方法也不定義,這樣就必須將子類也標記為抽象類

2 定義全部的抽象方法,子類就不是抽象的了

抽象類不能被實例化 (不能new)這個類的對象

可以創建一個具體子類的對象,可以定義一個抽象類變量,但是它只能引用非抽象子類的對象。

受保護訪問

private 子類不能訪問超類的私有域,

protected 允許子類訪問超類的某個域

2、Object:所有類的超類

Object是Java的始祖,在Java中每個類都是由它擴展而來

可以使用Object類型的變量引用任何類型的對象

eqluas方法

用于檢測一個對象是否等于另一個對象,在Object類中,這個方法將判斷兩個對象是否具有相同的引用。

在子類中定義equals方法時,首先調用超類的equals。如果檢測失敗,對象就不可能相等。

如果超類中的域都相等,就需要比較子類中的實例域。

相等測試與繼承

Java語言規范要求equals方法具有下面的特性:

自反性:x.eqluas(x) 返回true

對稱性:當且僅當x.eqluas(y) 返回true,y.eqluas(x)返回true

傳遞性:如果x.eqluas(y)返回true,y.eqluas(z)返回true,x.equlas(z)也應該返回true

一致性:如果x,y引用的對象沒有發生變化,反復調用x.eqluas(y)應該返回同樣的結果

對于任意非空引用x,x.eqluas(null) 應該返回false

對稱性,instanceof 子類與超類的比較

如果子類能夠擁有自己的相等概念,則對稱性需求將強制采用getClass進行檢測

如果由超類決定相等的概念,那么就可以使用instanceof進行檢測,這樣可以在不同子類的對象之間進行相等的比較。

編寫一個完美的equals方法的建議:

1 顯式參數命名為otherObject,稍后需要將它轉換成另一個叫做other的變量

2 檢測this 與 otherObject是否引用同一個對象:

if(this == otherObject) return true;

3 檢測otherObject是否為null,如果是null ,返回false

if(otherObjecr == null) return false;

4 比較this 與 otherObject是否屬于同一個類。

如果equals的語義在每個子類中所改變,就使用getClass檢測

if(getClass != otherObject.getClass()) return false;

如果所有的子類都擁有統一的語義,就使用instanceof檢測

if(!otherObject instanceof ClassName) return false;

5 將otherObject轉換為相應的類類型變量

ClassName other = (ClassName)otherObjecrt;

6 現在開始對所有需要比較的域進行比較了。使用==比較基本類型域,使用equals比較對象域。

如果在子類重新定義equals,就要調用super.equlas(other);

hashCode方法

散列碼(hashCode)是由對象導出的一個整數值。

hashCode定義在Object類中,因此每個對象都有一個默認的散列碼,其值為對象的存儲位置。

如果重新定義equals方法,就必須重新定義hashCode方法,以便用戶可以將對象插入到散列表中

toString方法

3、泛型數組列表

訪問數組列表對象

ArrayList

不必指出數組的大小

使用add將任意多的元素添加到數組

使用size()替代length計算元素的數目

使用a.get(i)替代a[i]訪問元素

4、對象包裝器與自動裝箱

基本類型 轉換為 對象

5、參數數量可變的方法

省略號...是Java代碼的一部分,它表明這個方法可以接收任意數量的對象

6、枚舉類

Enum

7、反射

反射機制:

在運行中分析類的能力

在運行中查看對象

實現通用的數組操作代碼

利用Method對象

Class類

Class.forName().newInstance();

捕獲異常

try catch

利用反射分析類的能力

Field Method Constructor

三個類都有

getName返回項目的名稱

getModifiers 返回一個整型數值,描述修飾符

Field getType 返回描述域所屬類型的Class對象

getFileds

getDeclaredFileds

在運行時使用反射分析對象

setAccessible

使用反射編寫泛型數組代碼

CopyOf

調用任意方法

Method invoke

8、繼承設計的技巧

1、將公共操作和域放在超類

2、不要使用受保護的域

3、使用繼承實現 is-a 關系

4、除非所有集成的方法都有意義,否則不要使用繼承

5、在覆蓋方法時,不要改變預期的行為

6、使用多態,而非類型信息

7、不要過多的使用反射

原文:http://www.cnblogs.com/loveincode/p/7188320.html

總結

以上是生活随笔為你收集整理的Java使用继承的语法是,Java基础语法八 继承的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。