国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

java基礎(chǔ)知識(shí)二

這篇具有很好參考價(jià)值的文章主要介紹了java基礎(chǔ)知識(shí)二。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

五、Java類(lèi)和對(duì)象

1、概述

1.1、基本概念

類(lèi)是具有相同屬性和行為的一組對(duì)象的集合,包含數(shù)據(jù)和操作,數(shù)據(jù)被稱(chēng)為成員變量,操作被稱(chēng)為方法

對(duì)象是類(lèi)的實(shí)例,即對(duì)象 = 數(shù)據(jù) + 行為或者對(duì)象 = 狀態(tài) + 操作

類(lèi)抽象的、概念上的定義,對(duì)象是一個(gè)具體的、實(shí)際存在的個(gè)體,即一個(gè)實(shí)例

1.2、類(lèi)的特性

封裝:提供多種訪問(wèn)的權(quán)限,目的是:隱藏類(lèi)中成員變量和方法的細(xì)節(jié)

繼承:提供從已存在的類(lèi)創(chuàng)建新的類(lèi)的機(jī)制

多態(tài):方法執(zhí)行的多樣性,表現(xiàn)為:覆蓋和重寫(xiě)

1.3、定義類(lèi)

Java程序設(shè)計(jì)的基本單位就是類(lèi),Java源文件就是由若干個(gè)類(lèi)構(gòu)成的

// 格式
聲明類(lèi){
	成員變量的聲明
    方法的聲明及實(shí)現(xiàn)
    構(gòu)造方法
    代碼塊
    內(nèi)部類(lèi)
}

// 定義類(lèi)的格式
[修飾符] [abstract|finally] class 類(lèi)名 [extends 父類(lèi)] [implements 接口列表]{ // 注:修飾符:省略 或者 public
		// 聲明成員變量
    	[修飾符] [static] [final] 數(shù)據(jù)類(lèi)型 成員變量名 [ = 表達(dá)式]  // static: 類(lèi)成員變量 ;final: 常用于聲明常量
         // 注:修飾符:public、private、protected、省略
         // 盡可能用private
         
         // 聲明方法
         [修飾符] [static] [finally] 返回值類(lèi)型 方法名([參數(shù)列表]) [throws 異常類(lèi)]{
            		語(yǔ)句序列
                     [return [返回值]]
        }
        // 注:修飾符:public、private、protected、省略  
        // throws 異常類(lèi):聲明方法拋出指定異常
}

1.4、變量

1.4.1、分類(lèi)
名稱(chēng) 定義位置 作用域
成員變量 在類(lèi)中聲明 整個(gè)類(lèi)
局部變量 在方法中聲明 該方法
1.4.2、補(bǔ)充

對(duì)成員變量的操作只能在方法中

在一個(gè)確定的域中,變量名應(yīng)該是唯一的

1.4.3、成員變量和局部變量的區(qū)別
成員變量 局部變量
訪問(wèn)權(quán)限 整個(gè)類(lèi)都可以訪問(wèn) 只在所屬區(qū)域有效
內(nèi)存位置 堆內(nèi)存 棧內(nèi)存
默認(rèn)值 無(wú)
存在時(shí)間 隨著對(duì)象的創(chuàng)建存在,隨著對(duì)象的刪除消失 隨著所屬區(qū)域的結(jié)束釋放

2、基本操作

2.1、創(chuàng)建對(duì)象的步驟

2.1.1、對(duì)象的聲明

聲明完后,無(wú)實(shí)體,不能調(diào)用,僅僅在棧內(nèi)存中開(kāi)辟了一個(gè)空間

// 格式
類(lèi)名 對(duì)象名;
Mydate data;
2.1.2、實(shí)例化

在堆中開(kāi)辟了空間,可以調(diào)用

// 格式
對(duì)象名 = new 類(lèi)名([參數(shù)列表])

//也可聲明和實(shí)例合成一步
類(lèi)名 對(duì)象名 = new 類(lèi)名([參數(shù)列表])

2.2、使用對(duì)象

對(duì)象時(shí)一種引用型變量,變量中存放著引用,指向堆中的地址

2.3、構(gòu)造方法

創(chuàng)建對(duì)象時(shí)自動(dòng)調(diào)用,名字與所在類(lèi)完全相同,不會(huì)被子類(lèi)繼承

3、成員變量

靜態(tài)成員變量 普通成員變量
別名 類(lèi)成員變量 實(shí)例成員變量
形式區(qū)別 有static修飾 無(wú)static修飾
存儲(chǔ)位置 方法區(qū)(共享區(qū)域區(qū))的靜態(tài)區(qū) 堆內(nèi)存中
對(duì)該類(lèi)的所有對(duì)象都一致 區(qū)分同一類(lèi)創(chuàng)建的各個(gè)對(duì)象
調(diào)用方式 類(lèi)名和對(duì)象都可調(diào)用 只能被對(duì)象調(diào)用

4、靜態(tài)初始化塊

不包含在任何方法體中

當(dāng)類(lèi)被載入時(shí),靜態(tài)代碼塊被執(zhí)行,且只執(zhí)行一次

可以用來(lái)進(jìn)行初始化

類(lèi)是在第一次被使用時(shí)進(jìn)行載入

class A{
	static{
        //靜態(tài)代碼塊
    }
}

5、成員變量初始化順序

靜態(tài)成員變量定義時(shí)直接給出初始值 > 靜態(tài)初始化 > 實(shí)例成員變量定義時(shí)給出初始值 > 初始化塊 > 構(gòu)造方法

6、方法

實(shí)例方法 類(lèi)方法
區(qū)別 除構(gòu)造方法外的其他方法 聲明時(shí)使用static修飾
調(diào)用 可以調(diào)用類(lèi)方法和實(shí)例方法 只能調(diào)用類(lèi)方法
操作 可以操作類(lèi)成員變量和實(shí)例成員變量 只能操作類(lèi)成員變量
只能被對(duì)象調(diào)用 類(lèi)和對(duì)象都可調(diào)用

7、匿名對(duì)象

不定義對(duì)象的引用,直接調(diào)用這個(gè)對(duì)象的方法的對(duì)象

new 類(lèi)名().方法名();

用處:

1、該對(duì)象只使用一次

2、將匿名對(duì)象作為實(shí)參傳遞給一個(gè)方法調(diào)用

8、this引用

代指使用當(dāng)前對(duì)象的成員變量

不可以出現(xiàn)在類(lèi)方法中

// 使用this調(diào)用本類(lèi)重載的構(gòu)造方法時(shí),this()必須是第一條語(yǔ)句
class Person{
    int age;
    Person(int age){
        this.age = age;
    }
    Person(){
        this(30);
        this.age = 20;
    }
}

9、繼承

9.1、基本概念

由已有的類(lèi)創(chuàng)建新的類(lèi)的機(jī)制

Java不支持多重繼承,即一個(gè)類(lèi)只能由一個(gè)父類(lèi)

若沒(méi)有聲明父類(lèi),默認(rèn)繼承Object類(lèi)

// 格式
[修飾符] class 子類(lèi)名 [extends 父類(lèi)名]{
    
}

9.2、繼承原則

1、子類(lèi)繼承父類(lèi)的成員變量

2、子類(lèi)繼承父類(lèi)除構(gòu)造方法外的方法

3、子類(lèi)可以增加自己的成員變量和方法

4、子類(lèi)可以重新定義父類(lèi)的成員變量賀方法

5、子類(lèi)不能刪除父類(lèi)的成員變量和方法

6、重寫(xiě)時(shí),重寫(xiě)后的方法不能擁有比重寫(xiě)前更嚴(yán)格的訪問(wèn)權(quán)限、不能比被重寫(xiě)前產(chǎn)生更多的異常

9.3、補(bǔ)充

this代表本類(lèi)對(duì)象的引用

super代表一個(gè)父類(lèi)空間

9.4、super

1、調(diào)用被子類(lèi)隱藏的成員變量和方法

2、調(diào)用父類(lèi)的構(gòu)造方法,必須在子類(lèi)的構(gòu)造方法中使用,且必須是子類(lèi)構(gòu)造方法的第一條,本質(zhì)上來(lái)說(shuō)并不是創(chuàng)建一個(gè)“獨(dú)立的父類(lèi)“,而是為了完成當(dāng)前對(duì)象的父類(lèi)型特征的初始化操作

9.5、訪問(wèn)控制

類(lèi)的訪問(wèn)權(quán)限:public、缺省

public protected default private
當(dāng)前類(lèi)的方法
同一包內(nèi) ×
其他包內(nèi)的繼承類(lèi) × ×
其他包內(nèi)的非繼承類(lèi) × × ×

10、多態(tài)

方法的多態(tài):方法的重寫(xiě)、方法的重載

類(lèi)型的多態(tài):子類(lèi)是一種父類(lèi)類(lèi)型

10.1、類(lèi)型的多態(tài)

父類(lèi)引用能夠被賦值為子類(lèi)對(duì)象,反之則不行

父類(lèi) = 父類(lèi)

父類(lèi) = 子類(lèi)

子類(lèi) = 父類(lèi)

10.2、上轉(zhuǎn)型對(duì)象

zi是fu的子類(lèi)或者間接子類(lèi),當(dāng)用子類(lèi)zi創(chuàng)建一個(gè)對(duì)象,并把這個(gè)對(duì)象的引用放到父類(lèi)聲明的對(duì)象中時(shí),稱(chēng)這個(gè)對(duì)象是子類(lèi)zi對(duì)象的上轉(zhuǎn)型對(duì)象,上轉(zhuǎn)型對(duì)象的實(shí)體是子類(lèi)負(fù)責(zé)創(chuàng)建的,但上轉(zhuǎn)型對(duì)象會(huì)失去原對(duì)象(子類(lèi))的一些成員變量和功能

上轉(zhuǎn)型對(duì)象的成員變量同父類(lèi)一致

上轉(zhuǎn)型對(duì)象的方法同子類(lèi)一致

11、abstract類(lèi)和final類(lèi)

// abstract修飾的類(lèi)稱(chēng)為抽象類(lèi)
abstract class A{
    
}

// final類(lèi)不能被繼承,即不能有子類(lèi)
final class A{
    
}

11.1、abstract類(lèi)

特點(diǎn):

1、構(gòu)造方法、類(lèi)方法不能被聲明為抽象方法

2、抽象方法只允許聲明,不允許實(shí)現(xiàn),而且不允許同時(shí)使用final和abstract

3、不能用new運(yùn)算符創(chuàng)建對(duì)象:如果一個(gè)非抽象類(lèi)是某個(gè)抽象類(lèi)的子類(lèi),則必須重寫(xiě)全部抽象方法為不使用abstract修飾的方法

11.2、final關(guān)鍵字

修飾類(lèi) 不能被繼承
修飾成員變量 不能改變,通常與static同時(shí)使用,定義一個(gè)常量
修飾方法 不能被重寫(xiě)

11.3、final類(lèi)

// 聲明最終類(lèi)
public final class 類(lèi)名
    
// 聲明最終方法
public final 返回類(lèi)型 方法名([參數(shù)列表]) 

12、接口

12.1、基本操作

可以增加很多類(lèi)都需要實(shí)現(xiàn)的功能,使用相同的接口不一定有繼承關(guān)系

通過(guò)interface聲明一個(gè)接口

interface 接口名 [extends 父接口]

接口只允許有方法體,不允許實(shí)現(xiàn)

如果一個(gè)類(lèi)實(shí)現(xiàn)了某個(gè)接口,必須實(shí)現(xiàn)這個(gè)接口的所有方法,即為這些方法提供方法體

// 使用implements表示實(shí)現(xiàn)了一個(gè)或多個(gè)接口
interface A implements B,C……{
    
}

接口是引用類(lèi)型

12.2、接口回調(diào)

把使用某一接口的類(lèi)創(chuàng)建的對(duì)象的引用賦給該接口聲明的接口變量,那么該接口變量就可以調(diào)用貝類(lèi)實(shí)現(xiàn)的接口中的方法

interface A{
    void shout();
}
class dog implements A{
    void shout(){
        System.out.println("Wang!");
    }
}
public class Main{
    public static void main(String[] args){
        A a;
        a = new dog();
        a.shout(); //Wang!
    }
}

13、接口和抽象類(lèi)的比較

接口 抽象類(lèi)
抽象方法 抽象方法和非抽象方法
只能有常量 常量變量都有
沒(méi)有構(gòu)造方法 可以有構(gòu)造方法

接口是特殊的抽象類(lèi)

14、內(nèi)部類(lèi)

14.1、基本概念

內(nèi)部類(lèi)同外部類(lèi)一樣,在外部類(lèi)中相當(dāng)于外部類(lèi)的一個(gè)成員

外部類(lèi)的成員變量在內(nèi)部類(lèi)仍有效

內(nèi)部類(lèi)的方法也可以調(diào)用外部類(lèi)的方法

14.2、內(nèi)部類(lèi)分類(lèi)

定義位置 說(shuō)明
成員內(nèi)部類(lèi) 類(lèi)的內(nèi)部 外部類(lèi)的實(shí)例成員;在沒(méi)有外部類(lèi)的實(shí)例的情況下,內(nèi)部類(lèi)不能實(shí)例化;可以用任何修飾符修飾
局部?jī)?nèi)部類(lèi) 方法或語(yǔ)句塊內(nèi) 只能在他的方法內(nèi)使用
匿名類(lèi) 沒(méi)有類(lèi)名的局部?jī)?nèi)部類(lèi)
嵌套頂級(jí)類(lèi) 使用static修飾的成員內(nèi)部類(lèi)
// 局部?jī)?nèi)部類(lèi)的聲明
外部類(lèi)實(shí)例.new 內(nèi)部類(lèi)();

15、淺拷貝與深拷貝

對(duì)于基本數(shù)據(jù)類(lèi)型,可以通過(guò)賦值語(yǔ)句完成復(fù)制

對(duì)于引用型數(shù)據(jù)類(lèi)型,通過(guò)賦值語(yǔ)句不能完成真正意義上的復(fù)制

淺拷貝:僅僅復(fù)制他所考慮的對(duì)象

深拷貝:復(fù)制他所考慮的對(duì)象和扶植的對(duì)象所引用的對(duì)象

六、Java異常處理

1、程序錯(cuò)誤與處理

類(lèi)型 發(fā)現(xiàn) 說(shuō)明 舉例
語(yǔ)法錯(cuò) 編譯時(shí)發(fā)現(xiàn) 違反語(yǔ)法規(guī)范 使用未定義的變量
邏輯錯(cuò) 系統(tǒng)無(wú)法發(fā)現(xiàn) 程序員考慮失誤
語(yǔ)義錯(cuò) 運(yùn)行時(shí)發(fā)現(xiàn) 在語(yǔ)義上出現(xiàn)錯(cuò)誤 除數(shù)為0

2、異常處理機(jī)制

// 格式
try{
    
}catch(){
    
}finally{
    
}

3、Java的錯(cuò)誤和異常

3.1、錯(cuò)誤

程序運(yùn)行時(shí)遇到的硬件、操作系統(tǒng)、其他軟件或操作的錯(cuò)誤

當(dāng)產(chǎn)生錯(cuò)誤時(shí),會(huì)拋出Error類(lèi)對(duì)象

2.3、異常

在硬件操作系統(tǒng)正常時(shí),程序運(yùn)行時(shí)遇到的運(yùn)行錯(cuò)誤

Java的異常處理機(jī)制使程序能夠捕獲和處理異常

4、程序錯(cuò)誤與處理

通過(guò)異常處理機(jī)制,使程序具有處理錯(cuò)誤的能力,運(yùn)行錯(cuò)誤時(shí)也不會(huì)導(dǎo)致程序終止

在沒(méi)有發(fā)生異常的情況下:try—finally

發(fā)生異常的情況下:try—catch—finally

5、java的異常處理

5.1、catch子句捕獲異常的匹配規(guī)則

1、拋出異常對(duì)象與catch子句的參數(shù)類(lèi)型相同

2、拋出對(duì)象為catch子句參數(shù)類(lèi)的子類(lèi)

3、按照先后次序補(bǔ)貨拋出異常對(duì)象,只捕獲一次

建議:

1、多個(gè)catch子句需要按照子類(lèi)到父類(lèi)的次序進(jìn)行排列

2、通常最后一個(gè)catch子句的異常類(lèi)聲明為Exceptuion

5.2、Exception的輸出方法

getMessage()

5.3、方法聲明拋出異常的throws子句

如果一個(gè)方法將產(chǎn)生異常,而該方法不想處理或不能處理該異常,可以在方法聲明時(shí),采用throws子句聲明該方法將拋出異常

拋出后,必須捕獲并處理該異常

[修飾符] 返回值類(lèi)型 方法([參數(shù)列表])[throws 異常類(lèi)]

拋出自定義異常對(duì)象的throw語(yǔ)句也必須由try語(yǔ)句捕獲并處理

自定義的異常類(lèi)通過(guò)擴(kuò)展Throwable子類(lèi)來(lái)創(chuàng)建自定義異常類(lèi),但是,通常更多的是擴(kuò)展Exception類(lèi)

6、注意事項(xiàng)

1、子類(lèi)在覆蓋父類(lèi)方法時(shí),父類(lèi)的方法如果拋出了異常,則子類(lèi)的方法只能拋出父類(lèi)的異?;蛘吒割?lèi)異常的子類(lèi)

2、父類(lèi)拋出多個(gè)異常,則子類(lèi)只能拋出父類(lèi)異常的子集

3、如果父類(lèi)的方法沒(méi)有拋出異常,則子類(lèi)覆蓋是絕對(duì)不能拋出異常的,只能try文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-470301.html

到了這里,關(guān)于java基礎(chǔ)知識(shí)二的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包