目錄

可以有多個(gè)類(lèi),但是只能由一個(gè)public類(lèi)
類(lèi) = 字段 + 方法
類(lèi)的構(gòu)造
沒(méi)寫(xiě)構(gòu)造函數(shù)時(shí)
寫(xiě)構(gòu)造函數(shù)時(shí)
構(gòu)造函數(shù)中this的用法
1.this指當(dāng)前這個(gè)對(duì)象本身
2.this解決局部變量和域同名的問(wèn)題
3.通過(guò)this調(diào)用其他構(gòu)造方法
類(lèi)的修飾符和控制符
第一類(lèi):訪問(wèn)修飾符(private、default、protected、public)
第二類(lèi):其他修飾符和非訪問(wèn)修飾符(abstract、static、final)
static字段
final
abstract
可以有多個(gè)類(lèi),但是只能由一個(gè)public類(lèi)在每個(gè).Java程序中,可以擁有多個(gè)類(lèi),但是public類(lèi)有且只能擁有一個(gè),且這個(gè)public類(lèi)的名字必須與文件名相同。如圖所示:

此時(shí),程序沒(méi)有出現(xiàn)編譯報(bào)錯(cuò),但是當(dāng)我們改變一下類(lèi)的名字,如圖:

此時(shí),程序編譯報(bào)錯(cuò),錯(cuò)誤 原因?yàn)椋篢est類(lèi)是public的,應(yīng)該被聲明在一個(gè)叫Test.java的文件中,即文件名與主類(lèi)名不相同導(dǎo)致的。
接下來(lái),我們來(lái)看一下一個(gè).java文件可以存在多個(gè)類(lèi)的情況:
class Person1{
public String name = "張三";
public int age = 20;
public void print(){
System.out.println("姓名:"+name+" 年齡:"+age);
}
}
public class Main {
public static void main(String[] args) {
Person1 person1 = new Person1();
person1.print();
}
}通過(guò)此代碼,我們可以清楚的發(fā)現(xiàn),在一個(gè).java文件 中,出現(xiàn)了多個(gè)類(lèi)(Person1和Main),再次強(qiáng)調(diào)一遍,一個(gè).java文件中有且只能出現(xiàn)一個(gè)public類(lèi)。
因?yàn)槊總€(gè).java文件被執(zhí)行的時(shí)候都會(huì)先執(zhí)行public類(lèi),而且只執(zhí)行public類(lèi)中的代碼,如果存在其他的類(lèi)但是在public類(lèi)中沒(méi)有使用,就不會(huì)執(zhí)行其他的類(lèi),但是這個(gè)類(lèi)的寫(xiě)法必須正確,否則會(huì)編譯報(bào)錯(cuò);如果寫(xiě)了其他的類(lèi)并在public類(lèi)中使用了該類(lèi),那么也會(huì)執(zhí)行其他類(lèi)的相應(yīng)代碼。
而且除public類(lèi)之外的其他類(lèi)也可以寫(xiě)在public類(lèi)之后,即使在主類(lèi)中調(diào)用到該類(lèi)。如圖:

由圖可以確定,定義的類(lèi)可以放在public類(lèi)之前和之后。
類(lèi) = 字段 + 方法如圖:

由圖可見(jiàn),此代碼中的name和age都屬于Person1中的字段,print()和eat()都屬于Person1的方法
字段?是類(lèi)的屬性,用變量來(lái)表示
字段(filed),通常叫做”類(lèi)成員“,或”類(lèi)成員變量“,有時(shí)也叫”域“,理解為”數(shù)據(jù)成員“,用來(lái)承載數(shù)據(jù)。
方法?是類(lèi)的操作和功能,是用函數(shù)來(lái)表示的。
類(lèi)的構(gòu)造類(lèi)的構(gòu)造可以用來(lái)給一個(gè)類(lèi)的數(shù)值賦一個(gè)初值,用來(lái)初始化一個(gè)該類(lèi)的對(duì)象。構(gòu)造函數(shù)與類(lèi)名同名,且不需要寫(xiě)返回值。

如果當(dāng)我們沒(méi)有寫(xiě)構(gòu)造函數(shù)時(shí),那么程序會(huì)自動(dòng)生成一個(gè)默認(rèn)的構(gòu)造函數(shù),但是這個(gè)構(gòu)造函數(shù)里面什么都沒(méi)有,類(lèi)似于空值,函數(shù)中沒(méi)有任何的參數(shù),也沒(méi)有任何的語(yǔ)句,如圖:
Person1(){}如果沒(méi)有寫(xiě)構(gòu)造函數(shù),我們初始化一個(gè)新的對(duì)象的時(shí)候,不需要寫(xiě)參數(shù)。如圖:

此時(shí)初始化對(duì)象時(shí),就不需要寫(xiě)參數(shù)。
寫(xiě)構(gòu)造函數(shù)時(shí)如果我們自己寫(xiě)了構(gòu)造函數(shù),那么程序就不會(huì)自動(dòng)給我們生成默認(rèn)的構(gòu)造函數(shù)了,并且如果我們自己寫(xiě)的構(gòu)造函數(shù)中有參數(shù),我們?cè)趎ew一個(gè)對(duì)象時(shí),要寫(xiě)入?yún)?shù),否則會(huì)編譯報(bào)錯(cuò),如果自己寫(xiě)的構(gòu)造函數(shù)中不含有參數(shù),相應(yīng)的,我們?cè)趎ew一個(gè)對(duì)象時(shí)也不用寫(xiě)參數(shù)。如圖:

如果我們自己構(gòu)造了函數(shù),且函數(shù)中含有兩個(gè)參數(shù),但是我們?cè)趯?shí)例化對(duì)象時(shí)沒(méi)有給出參數(shù),此時(shí)就會(huì)出現(xiàn)如圖所示的編譯報(bào)錯(cuò),如果我們加上兩個(gè)對(duì)應(yīng)類(lèi)型的參數(shù),程序就不會(huì)再編譯報(bào)錯(cuò),如圖:

例如,age和this.age是一樣的,都能運(yùn)行出相應(yīng)的結(jié)果。

由運(yùn)行結(jié)果所示,證實(shí)了上述說(shuō)法。
2.this解決局部變量和域同名的問(wèn)題
此時(shí),我明明都已經(jīng)new了一個(gè)新的對(duì)象,并且也傳入了類(lèi)型對(duì)應(yīng)的參數(shù),為什么打印的時(shí)候會(huì)是這樣呢?這是因?yàn)闃?gòu)造Person1這個(gè)函數(shù)時(shí)的形參變量名和前面定義Person1這個(gè)類(lèi)時(shí)的字段名相同了,那么,該如何解決呢?這時(shí),this關(guān)鍵詞也發(fā)揮作用了,如圖:

在構(gòu)造函數(shù)時(shí),this可以調(diào)用另一種構(gòu)造方法,,并且這條調(diào)用語(yǔ)句必須放在第一行。
類(lèi)的修飾符和控制符相關(guān)作用:可以修飾類(lèi),也可以修飾類(lèi)中的成員(字段,方法)。
第一類(lèi):訪問(wèn)修飾符(private、default、protected、public)修飾類(lèi) | 當(dāng)前類(lèi) | 同包 | 子類(lèi) | 其他類(lèi) |
Private | √ | |||
Default | √ | √ | ||
Protected | √ | √ | √ | |
Public | √ | √ | √ | √ |
這四類(lèi)訪問(wèn)修飾符之間的關(guān)系如上圖所示
如果不加修飾符,則默認(rèn)為default修飾。
第二類(lèi):其他修飾符和非訪問(wèn)修飾符(abstract、static、final)其他修飾符/非訪問(wèn)控制符 | 作用 |
Abstract | 修飾類(lèi),成員 |
Static | 修飾內(nèi)部類(lèi),成員 |
Final | 修飾類(lèi),成員。局部變量 |
1.靜態(tài)字段最本質(zhì)的特點(diǎn)是,他們是類(lèi)的字段,不屬于任何一個(gè)對(duì)象實(shí)例。
2.它不保存在某個(gè)對(duì)象實(shí)例的內(nèi)存區(qū)間中,而是保存再類(lèi)的內(nèi)存區(qū)域的公共存儲(chǔ)單元。
3.類(lèi)中的static變量可以通過(guò)了類(lèi)名直接訪問(wèn),也可以通過(guò)對(duì)象實(shí)例來(lái)訪問(wèn),兩種方法的結(jié)果是相同的。因?yàn)檫@個(gè)static變量是存在最原本的類(lèi)中的,它本身和用它來(lái)實(shí)例化的對(duì)象都可以訪問(wèn)。
例如System類(lèi)的in和out對(duì)象,就是屬于類(lèi)的域,直接用類(lèi)名來(lái)訪問(wèn),即System.in和System.out 。

如果給此下文代碼中的抽象類(lèi)Person1實(shí)例化一個(gè)對(duì)象的時(shí)候,會(huì)發(fā)現(xiàn)編譯報(bào)錯(cuò),說(shuō)明抽象類(lèi)不能實(shí)例化對(duì)象。?

抽象類(lèi)就是用來(lái)被繼承的,子類(lèi)可以是抽象類(lèi),也可以是非抽象類(lèi)。

同學(xué)們,Java中類(lèi)這一節(jié)的內(nèi)容有點(diǎn)難理解,一定要多下功夫,才能摸透這其中的點(diǎn)點(diǎn)滴滴。
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
網(wǎng)頁(yè)標(biāo)題:Java中的類(lèi)基礎(chǔ)詳解-創(chuàng)新互聯(lián)
鏈接分享:http://chinadenli.net/article48/edchp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)、微信公眾號(hào)、定制開(kāi)發(fā)、域名注冊(cè)、面包屑導(dǎo)航、網(wǎng)站排名
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容