日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

java4_Java 4

發布時間:2025/3/21 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java4_Java 4 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、繼承的問題

子類是父類的一個擴展,子類可以利用父類的屬性與行為,這種情況子類會破壞父類的封裝

為了保持父類良好的封裝性,設計父類有以下規則:

如果要把某類設計為最終類則需要添加final修飾符,或將此類的構造器聲明為private

2、利用組合實現復用

組合就是把舊類的對象當做新類的屬性嵌入,并用private修飾

public class Animals

{

public Animals()

{

System.out.println("Animals");

}

public void breathe()

{

System.out.println("ha-hu");

}

}

public class Wolf

{

private Animals a;

public Wolf(Animals a)

{

this.a=a;

}

public void run()

{

System.out.println("run");

}

public static void main(String[]args)

{

Animals b=new Animals();

Wolf a=new Wolf(b);

a.run();

}

}

3、初始化塊

前面定義的初始化塊先執行,后面的后執行

syntax:

[修飾符]{

//...

}

只能使用sattic修飾,稱作靜態初始化塊

當創建一個對象是先調用初始化塊

靜態初始化塊對整個類進行初始化

系統會首先執行靜態初始化塊,并會一直回溯到基類再一步一步執行靜態初始化,再執行其他

4、基本數據類型的包裝類

為什么要用包裝類?

解決8個基本類型變量不能變成Object類型變量的問題,為8個基本類型變量定義了應用類型的包裝類。

JDK1.5后提供了自動裝箱與自動拆箱,就可以直接來了,不用這么復雜了

基本類型變量與字符串之間的轉換關系

5、toString

toString 是Object 類定義的一個方法,用以描述對象的狀態信息

返回值:對象類的實現類名+@+hashCode

可以依據實際情況重寫toString

6、==與equals

==比較是一種基本類型的比較符,當要對引用類型進行比較時,比較的是是否指向同一個對象,不是值相等

要實現值相等的比較,就要重寫equals

Object提供的equals與==是一樣的,沒有用的,一定要重寫

重寫后有規定:

1)自反性;

2)傳遞性;

3)對稱性;

4)一致性。

Example:

public boolean equals(Object obj)

{

if(this==obj)

return true;

if(obj!=null&&obj.getClass()==SomeClass.class)

{

SomeClass sc=(SomeClass)obj;

if(compare)

return true;

}

return false;

}

7、類成員

類中只能包含屬性、方法、構造器、初始化塊、內部類、枚舉類

static不修飾構造器

類成員不能訪問實例成員

8、單例類Singleton

一個類只能創建一個實例

把構造器用private修飾

需要一個public方法作為這個類的訪問點,同時要將其定義為static

該類還需緩存已創建的對象

class Singleton

{

//使用一個變量來緩存曾經創建的實例

private static Singleton instance;

//隱藏構造器

private Singleton(){}

//提供一個靜態方法,用于返回Singleton實例

//可加入自定義的控制,保證只產生一個Singleton

public static Singleton getInstance()

{

if(instance==null)

{

instance=new Singleton();

}

return instance;

}

}

9、final

final修飾的變量賦值后不可改變

final修飾的成員變量必須在類中賦初值

類屬性:在靜態初始化塊中、在聲明該屬性時指定初始值

實例屬性:在非靜態初始化塊、聲明屬性、構造器中指定初始值

系統不會對final修飾成員進行隱式初始化

final修飾的引用變量只是保證它所指向的地址不改變,而該引用的內容是可以改變的

final修飾的方法不可被重寫,但可以重載

final修飾的類不可繼承

10、不可變類

創建該類的實例后,實例的屬性不可改變

8個包裝類、java.lang.String都是不可變類

hashcode返回的是對象地址

final修飾的引用類型變量不符合不可變,那么我們在設計類的時候必須將此變量保護起來。

11、緩存實例的不可變類

如果程序需要經常使用某些實例,則應把其緩存

Example:

利用數組作為緩存池

public class CacheImmutale

{

private final String name;

private static CacheImmutale[]a=new CacheImmutale[10];

private static int pos=0;

public CacheImmutale(String name)

{

this.name=name;

}

public String getName()

{

return name;

}

//利用valueOf創建對象,而不用構造器

public static CacheImmutale valueOf(String name)

{

for(int i=0;i<10;i++)

{

if(a[i]!=null&&a[i].getName().equals(name))

return a[i];

}

if(pos==10)

{

a[0]=new CacheImmutale(name);

pos=1;

return a[0];

}

else

{

a[pos++]=new CacheImmutale(name);

return a[pos-1];

}

}

//重寫equals

public boolean equals(Object obj)

{

if(obj instanceof CacheImmutale)

{

CacheImmutale aa=(CacheImmutale)obj;

if(name.equals(aa.getName()))

{

return true;

}

return false;

}

}

//重寫hashCode

public int hashCode()

{

return name.hashCode();

}

}

12、抽象類

抽象方法與抽象類的規則:

利用抽象類就是利用一種模板模式

抽象父類中提供多個子類的通用方法,子類再進行具體的實現補充。

13、接口

接口中所有的方法都是抽象方法

接口規定類中應具體提供的方法,但不管具體實現

syntax:

[修飾符] interface Name extends 父接口1, 父接口2...

{

}

接口中可以包含屬性(只能是常量),方法(只能是抽象實例),內部類(包括內部接口)和枚舉類的定義

只能是public 、static、final(系統默認)

方法、內部類、枚舉類 自動用public static 修飾

使用接口:

類必須實現接口內的所有方法,只能用public

模擬多繼承

interface and abstract class

總結

以上是生活随笔為你收集整理的java4_Java 4的全部內容,希望文章能夠幫你解決所遇到的問題。

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