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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

Java中的类基础详解

發(fā)布時(shí)間:2023/12/20 java 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java中的类基础详解 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

目錄

可以有多個(gè)類,但是只能由一個(gè)public類

類 = 字段 + 方法

類的構(gòu)造

沒(méi)寫構(gòu)造函數(shù)時(shí)

寫構(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)造方法

類的修飾符和控制符

第一類:訪問(wèn)修飾符(private、default、protected、public)

第二類:其他修飾符和非訪問(wèn)修飾符(abstract、static、final)

static字段

?final

?abstract

可以有多個(gè)類,但是只能由一個(gè)public類

在每個(gè).Java程序中,可以擁有多個(gè)類,但是public類有且只能擁有一個(gè),且這個(gè)public類的名字必須與文件名相同。如圖所示:

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

此時(shí),程序編譯報(bào)錯(cuò),錯(cuò)誤 原因?yàn)?#xff1a;Test類是public的,應(yīng)該被聲明在一個(gè)叫Test.java的文件中,即文件名與主類名不相同導(dǎo)致的。

接下來(lái),我們來(lái)看一下一個(gè).java文件可以存在多個(gè)類的情況:

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è)類(Person1和Main),再次強(qiáng)調(diào)一遍,一個(gè).java文件中有且只能出現(xiàn)一個(gè)public類。

因?yàn)槊總€(gè).java文件被執(zhí)行的時(shí)候都會(huì)先執(zhí)行public類,而且只執(zhí)行public類中的代碼,如果存在其他的類但是在public類中沒(méi)有使用,就不會(huì)執(zhí)行其他的類,但是這個(gè)類的寫法必須正確,否則會(huì)編譯報(bào)錯(cuò);如果寫了其他的類并在public類中使用了該類,那么也會(huì)執(zhí)行其他類的相應(yīng)代碼。

而且除public類之外的其他類也可以寫在public類之后,即使在主類中調(diào)用到該類。如圖:

由圖可以確定,定義的類可以放在public類之前和之后。

?類 = 字段 + 方法

如圖:

由圖可見(jiàn),此代碼中的name和age都屬于Person1中的字段,print()和eat()都屬于Person1的方法

字段?是類的屬性,用變量來(lái)表示

字段(filed),通常叫做”類成員“,或”類成員變量“,有時(shí)也叫”域“,理解為”數(shù)據(jù)成員“,用來(lái)承載數(shù)據(jù)。

方法?是類的操作和功能,是用函數(shù)來(lái)表示的。

類的構(gòu)造

類的構(gòu)造可以用來(lái)給一個(gè)類的數(shù)值賦一個(gè)初值,用來(lái)初始化一個(gè)該類的對(duì)象。構(gòu)造函數(shù)與類名同名,且不需要寫返回值。

沒(méi)寫構(gòu)造函數(shù)時(shí)

如果當(dāng)我們沒(méi)有寫構(gòu)造函數(shù)時(shí),那么程序會(huì)自動(dòng)生成一個(gè)默認(rèn)的構(gòu)造函數(shù),但是這個(gè)構(gòu)造函數(shù)里面什么都沒(méi)有,類似于空值,函數(shù)中沒(méi)有任何的參數(shù),也沒(méi)有任何的語(yǔ)句,如圖:

Person1(){}

?如果沒(méi)有寫構(gòu)造函數(shù),我們初始化一個(gè)新的對(duì)象的時(shí)候,不需要寫參數(shù)。如圖:

此時(shí)初始化對(duì)象時(shí),就不需要寫參數(shù)。

寫構(gòu)造函數(shù)時(shí)

如果我們自己寫了構(gòu)造函數(shù),那么程序就不會(huì)自動(dòng)給我們生成默認(rèn)的構(gòu)造函數(shù)了,并且如果我們自己寫的構(gòu)造函數(shù)中有參數(shù),我們?cè)趎ew一個(gè)對(duì)象時(shí),要寫入?yún)?shù),否則會(huì)編譯報(bào)錯(cuò),如果自己寫的構(gòu)造函數(shù)中不含有參數(shù),相應(yīng)的,我們?cè)趎ew一個(gè)對(duì)象時(shí)也不用寫參數(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)類型的參數(shù),程序就不會(huì)再編譯報(bào)錯(cuò),如圖:

?構(gòu)造函數(shù)中this的用法

1.this指當(dāng)前這個(gè)對(duì)象本身

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

由運(yùn)行結(jié)果所示,證實(shí)了上述說(shuō)法。

2.this解決局部變量和域同名的問(wèn)題

?此時(shí),我明明都已經(jīng)new了一個(gè)新的對(duì)象,并且也傳入了類型對(duì)應(yīng)的參數(shù),為什么打印的時(shí)候會(huì)是這樣呢?這是因?yàn)闃?gòu)造Person1這個(gè)函數(shù)時(shí)的形參變量名和前面定義Person1這個(gè)類時(shí)的字段名相同了,那么,該如何解決呢?這時(shí),this關(guān)鍵詞也發(fā)揮作用了,如圖:

3.通過(guò)this調(diào)用其他構(gòu)造方法

在構(gòu)造函數(shù)時(shí),this可以調(diào)用另一種構(gòu)造方法,,并且這條調(diào)用語(yǔ)句必須放在第一行。

類的修飾符和控制符

相關(guān)作用:可以修飾類,也可以修飾類中的成員(字段,方法)。

第一類:訪問(wèn)修飾符(private、default、protected、public)

修飾類

當(dāng)前類

同包

子類

其他類

Private

Default

Protected

Public

這四類訪問(wèn)修飾符之間的關(guān)系如上圖所示

如果不加修飾符,則默認(rèn)為default修飾。

第二類:其他修飾符和非訪問(wèn)修飾符(abstract、static、final)

其他修飾符/非訪問(wèn)控制符

作用

Abstract

修飾類,成員

Static

修飾內(nèi)部類,成員

Final

修飾類,成員。局部變量

static字段

1.靜態(tài)字段最本質(zhì)的特點(diǎn)是,他們是類的字段,不屬于任何一個(gè)對(duì)象實(shí)例。

2.它不保存在某個(gè)對(duì)象實(shí)例的內(nèi)存區(qū)間中,而是保存再類的內(nèi)存區(qū)域的公共存儲(chǔ)單元。

3.類中的static變量可以通過(guò)了類名直接訪問(wèn),也可以通過(guò)對(duì)象實(shí)例來(lái)訪問(wèn),兩種方法的結(jié)果是相同的因?yàn)檫@個(gè)static變量是存在最原本的類中的,它本身和用它來(lái)實(shí)例化的對(duì)象都可以訪問(wèn)。
例如System類的in和out對(duì)象,就是屬于類的域,直接用類名來(lái)訪問(wèn),即System.in和System.out 。


?final

  • final類:如果一個(gè)類被final修飾符所修飾和限定,說(shuō)明這個(gè)類不能被繼承,即不會(huì)擁有子類
  • final方法:final修飾符所修飾的方法,是不能被子類所覆蓋的方法。
  • final字段和final局部變量:它們的值一旦給定,就不能夠更改。并且它們是只讀量,它們能且只能被賦值一次。
  • 如果一個(gè)字段被static final所同時(shí)修飾,它可以表示一個(gè)常量。如果不給定初始值,則按默認(rèn)值進(jìn)行初始化(引用類型為null,數(shù)值類型為0,Boolean類型為false)。

?abstract

  • abstract只能修飾類和方法,不能修飾變量。
  • 凡是用abstract修飾符修飾的類被稱為抽象類。
  • 抽象類不能實(shí)例化,不能創(chuàng)建對(duì)象,設(shè)計(jì)抽象類就是用來(lái)被子類繼承的。
  • abstract不能和final、private、static聯(lián)合使用,只能單獨(dú)使用abstract或者聯(lián)合public abstract使用。
  • 抽象類方法在子類中必須被實(shí)現(xiàn),否則子類仍然是abstract的。

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

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

?

?同學(xué)們,Java中類這一節(jié)的內(nèi)容有點(diǎn)難理解,一定要多下功夫,才能摸透這其中的點(diǎn)點(diǎn)滴滴。

總結(jié)

以上是生活随笔為你收集整理的Java中的类基础详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。