国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|編程技術(shù)|正則表達(dá)式|

服務(wù)器之家 - 編程語言 - JAVA教程 - Java面向?qū)ο蠡A(chǔ),類,變量,方法

Java面向?qū)ο蠡A(chǔ),類,變量,方法

2020-10-05 11:50paradipose JAVA教程

這篇文章主要介紹了Java面向?qū)ο蠡A(chǔ),類,變量,方法,需要的朋友可以參考下

 

一、面向?qū)ο?/a>的4個基本特征

 

抽象性、封裝性、繼承性和多態(tài)性。

抽象性分為過程抽象和數(shù)據(jù)抽象。

 

封裝性

封裝將數(shù)據(jù)以及加在這些數(shù)據(jù)上的操作組織在一起,成為有獨(dú)立意義的構(gòu)件。外部無法直接訪問封裝的數(shù)據(jù),從而保證了這些數(shù)據(jù)的正確性。
如果外部需要訪問類里面的數(shù)據(jù),就必須通過接口。接口規(guī)定了可對一個特定的對象發(fā)出哪些請求。

 

繼承性

繼承是一種聯(lián)結(jié)的層次模型,并允許和鼓勵類的重用,它提供給了一種明確表述共性的方法。對象的一個新類可以從現(xiàn)有的類中派生,這個過程稱為類繼承。新類繼承了原始類的特性,新類稱為原始類的派生類(子類)。

 

多態(tài)性

多態(tài)是指允許不同類的對象對同一消息做出響應(yīng)。

 

二、類

 

 

類的聲明

[類修飾符] class 類名 [extends 父類名] [implements 接口名列表]

  • class、extend、implements都是關(guān)鍵字。類名、父類名、接口名都是用戶標(biāo)識符。
  • 父類。新類必須在已有的類的基礎(chǔ)上構(gòu)造,原有類即為父類,新類即為子類。Java每一個類都有父類,如果不含父類,默認(rèn)父類為Object類。
  • 修飾符。final:最終類,它不能擁有子類。如果沒有此修飾符,則可以被子類所繼承。
    abstrat:抽象類,類中的某些方法沒有實現(xiàn),必須由其子類來實現(xiàn)。所以這種類不能實例化。
    public:表明本類可以被所屬包以外的類訪問。
    final和abstract是互斥的,其他關(guān)鍵詞可以組合使用。eg:public final class Teacher extends Human implements Professor

 

注意

在定義類時,只是通知編譯器需要準(zhǔn)備多大的內(nèi)存空間,并沒有為它分配內(nèi)存空間。只有用類創(chuàng)建了對象后,才會真正的占用內(nèi)存空間。

Java規(guī)定:如果成員變量沒有被顯示賦初值,系統(tǒng)將自動為它們賦值。

 

三、變量

 

 

變量類型 定義
成員變量 定義在類里面,和方法處于同一層次
局部變量 定義在方法里面

 

 

1.成員變量

默認(rèn)情況下,成員變量是實例變量,在外部需要對象才能操作;如果用static修飾,就成為靜態(tài)成員,也稱為類變量,可以直接操作。如果前面加上關(guān)鍵字final ,它就是一個常量。

根據(jù)訪問權(quán)限來區(qū)分成員變量 或方法

 

  public protected 默認(rèn) private
本類內(nèi)部
同一包中的子類 ×
同一包中非子類 ×
不同包中的子類 繼承訪問 × ×
不同包中非子類 × × ×

 

根據(jù)是否是靜態(tài)來區(qū)分

 

特點
實例成員變量 1.如果所屬的對象沒有被創(chuàng)建,實例成員變量就不存在;2.在類的外部使用它,通過“對象名.變量名”來訪問;3.在類的內(nèi)部,實例成員方法也可以直接訪問實例成員變量;4.不同對象擁有不同的實例成員變量,互不影響
靜態(tài)成員變量 1.被類的所有對象所共享,被稱為類變量;2.它不屬于某個具體對象,也不是保存在某個對象的內(nèi)存區(qū)域中,而是保存在類的公共存儲單元。在類的對象被創(chuàng)建之前使用;3.可以通過對象名.變量名或者類名.變量名訪問;4.它是一個公共變量,無論哪個對象改變了它的值,對其他所有該類對象都有效

 

 

2.局部變量和成員變量的區(qū)別

*局部變量必須先定義后使用。

 

局部變量沒有訪問權(quán)限修飾符,不能用public、private、和protected來修飾。這是因為它只能在定義它的方法內(nèi)部使用
局部變量不能用static修飾,沒有“靜態(tài)局部變量”,這是Java和C/C++的區(qū)別
系統(tǒng)不會自動問局部變量賦初值,但對于成員變量,系統(tǒng)會自動賦初值。基本類型為0,復(fù)合類型的值為null
局部變量的作用域僅限于定義它的方法,在方法外部無法訪問它。成員變量的作用域在整個類內(nèi)部都是可見的,所有成員方法都可以使用它。如果訪問權(quán)限允許,還可以在類的外部使用它
局部變量的生存周期與方法的執(zhí)行期相同。當(dāng)方法執(zhí)行到定義局部變量的語句時,局部變量被創(chuàng)建;執(zhí)行到它所在的作用于的最后一條語句時,局部變量被銷毀。類的成員變量,如果是實例成員變量,它和對象的生存期相同;靜態(tài)成員變量的生存期是整個程序運(yùn)行期
在同一個方法中,不允許有同名的局部變量;在不同的方法中,可以有同名的局部變量,互不干涉

局部變量可以與成員變量同名,且在使用時,局部變量有更高的優(yōu)先級

 

 

四、方法

 

 

方法類型  
實例方法 必須在類實例化后通過對象來調(diào)用
靜態(tài)方法(類方法) 可以在類實例化之前就使用

 

 

1.方法調(diào)用的形式

  • 調(diào)用者與被調(diào)用方法位于同一類中
    [this.]方法名[實際參數(shù)列表]
  • 調(diào)用者位于被調(diào)用方法所在類的外部
    對象名.方法名([實際參數(shù)列表]) 或者 類名.方法名([實際參數(shù)列表])
?
1
2
3
4
5
6
7
8
9
10
11
12
public class test{
 public void showMsg(){
 System.out.println("This is showMsg method.");
 }
 public void callOther(){
 showMsg();
 }
 public static void main(String args[ ]){
 test ob = new test();// ?為什么不直接調(diào)用
 ob.callOther();
 }
}

main()方法是一個靜態(tài)方法,它由系統(tǒng)來調(diào)用,系統(tǒng)在調(diào)用它的時候,并沒有創(chuàng)建一個test的對象,而callOther()和showMsg()方法都是實例方法,它們被調(diào)用時,都必須有對象的存在。所以必須在main()中先創(chuàng)建一個對象才能調(diào)用這兩個方法。而callOther()本身就是實例方法,它在執(zhí)行時,一定有對象存在的。基于這個前提,callOther()可以直接調(diào)用showMsg()方法。

**要注意實參和形參的區(qū)別。

 

2.構(gòu)造方法

一般形式

?
1
2
3
4
5
構(gòu)造方法名([參數(shù)列表]){
[this([參數(shù)列表]);] | [super([參數(shù)列表])];
語句序列
}
*其中this是調(diào)用其他的構(gòu)造方法,super是調(diào)用父類的構(gòu)造方法,它們都必須放在其他語句的前面。

注意事項

 

構(gòu)造方法名字必須和類名字完全相同
除了訪問權(quán)修飾符之外,不能有其他任何修飾符,也就不能有返回值
盡管沒有返回值,但不能用“void”修飾
構(gòu)造方法不能用static和final來修飾。一般也不用private修飾,這會導(dǎo)致無法在外部創(chuàng)建對象
構(gòu)造方法不能由對象顯示調(diào)用。一般通過new關(guān)鍵字來調(diào)用,或者用this,super來調(diào)用
構(gòu)造方法的參數(shù)列表可以為空,也可以有參數(shù),根據(jù)參數(shù)的有無,可以將構(gòu)造方法分為無參數(shù)的構(gòu)造方法和帶參數(shù)的構(gòu)造方法
用戶定義的類可以擁有多個構(gòu)造方法,但要求參數(shù)列表不同
如果用戶定義的類未提供任何構(gòu)造方法時,系統(tǒng)會自動為其提供一個無參數(shù)的構(gòu)造方法

 

構(gòu)造方法的調(diào)用

  • 隱式調(diào)用:類名 對象名 = new 類名(參數(shù));
  • 顯示調(diào)用:this([參數(shù)列表])
    使用this時需要注意: 1)用this調(diào)用構(gòu)造方法是,該語句只能用在構(gòu)造方法中 2)this語句必須是構(gòu)造方法的第一條語句 3)和new不同,this雖然可以調(diào)用構(gòu)造方法,但它只是執(zhí)行方法中的語句,并不會創(chuàng)建對象

構(gòu)造方法的重載

Java允許定義帶參數(shù)的構(gòu)造方法,而且這種帶參的構(gòu)造方法還可以多個,前提是參數(shù)列表有區(qū)別,這種現(xiàn)象稱為構(gòu)造方法的重載。

如果程序員至少定義了一個構(gòu)造方法,那么系統(tǒng)不會再提供不帶參的構(gòu)造方法。

 

3.靜態(tài)方法(類方法)

一般形式

?
1
2
3
[訪問權(quán)限修飾符]static 返回值類型 方法名([參數(shù)列表]){
語句序列
}

與實例方法區(qū)別

  • 實例方法必須在類實例化以后通過對象來調(diào)用,而靜態(tài)方法可以在實例化之前就使用。
  • 在外部調(diào)用靜態(tài)方法時,可以使用“類名.方法名”的方式,也可以使用“對象名.方法名”的方式;而實例方法只有后面這種形式。也就是說,調(diào)用靜態(tài)方法無需創(chuàng)建對象。
  • 靜態(tài)方法在訪問本類的成員時,只允許訪問靜態(tài)成員(即靜態(tài)成員變量和靜態(tài)方法),而不允許訪問實例成員變量和實例方法;實例方法則無限制。
  • 靜態(tài)方法中也不能使用關(guān)鍵字this。

 

4.靜態(tài)代碼塊

一般形式

?
1
2
3
static{
語句序列
}

注意事項

 

靜態(tài)代碼塊只能定義在類里面,它獨(dú)立于任何方法,不能定義在方法里面
靜態(tài)代碼塊里面的變量都是局部變量,只在本塊內(nèi)有效
靜態(tài)代碼塊會在類被加載時自動執(zhí)行,而無論加載者是JVM還是其他類
如果靜態(tài)代碼塊所在的類被創(chuàng)建了多個對象實例,只有第一個對象被創(chuàng)建時才執(zhí)行靜態(tài)代碼塊
一個類中允許定義多個靜態(tài)代碼塊,執(zhí)行順序根據(jù)定義順序進(jìn)行
靜態(tài)代碼塊只能訪問類的靜態(tài)成員,而不允許訪問實例成員

 

 

五、其他補(bǔ)充

 

 

一、關(guān)于變量

  • 在類體中的變量定義部分所定義的變量稱為類的成員變量,在方法體中定義的變量和方法的參數(shù)稱為局部變量。成員變量在整個類內(nèi)有效,局部變量只在定義它的方法內(nèi)有效。定義類的成員變量時可賦初值,但對成員變量的操作只能在方法內(nèi)進(jìn)行。
  • 成員變量又分為實例成員變量(實例變量)和類成員變量(類變量)。如果成員變量的類型前面加上關(guān)鍵字static,則該成員變量稱做類變量或靜態(tài)成員變量。 
  • 當(dāng)局部變量的名字與成員變量的名字相同時,則成員變量被隱藏。此時如果想在該方法中使用成員變量,必須使用關(guān)鍵字this。
  • 通過new創(chuàng)建類對象時,實例變量被分配內(nèi)存空間,且不同的實例變量將分配不同的內(nèi)存空間。類中的成員變量為類變量時,則所有類對象的這個類變量都分配同一處內(nèi)存,改變其中一個對象的這個類變量將會影響其他對象的這個類變量,即一個類所有的對象共享類變量。
  • 程序執(zhí)行時,類的字節(jié)碼加載到內(nèi)存,如果該類沒有創(chuàng)建對象,類的實例成員變量不會被分配內(nèi)存。但類中的類變量在該類被加載到內(nèi)存時就分配了內(nèi)存空間。
  • 類變量的內(nèi)存空間直到程序退出運(yùn)行時才釋放所占有的內(nèi)存。
  • 類變量可通過類名加“.”直接訪問,但實例變量必須通過實例名加“.”訪問(因為程序加載時實例變量并未分配內(nèi)存空間)。
  • 對于私有成員變量或方法(聲明為private的),只有在本類中創(chuàng)建該類的對象時,這個對象才能訪問自己的私有成員變量和類中的私有方法。
  • 對于共有成員變量和方法(聲明為public的),可在另外的類中通過創(chuàng)建的對象進(jìn)行訪問。
  • 受保護(hù)的成員變量和方法(聲明為protected的),可通過同一個包中的類創(chuàng)建對象進(jìn)行引用。
  • 友好變量和方法(不用public,private,protected聲明的),可通過同一個包中的類創(chuàng)建對象進(jìn)行引用。
  • 如果一個成員變量聲明為final,則它就是常量。
  • 如果子類想使用被子類隱藏了的父類的成員變量,可使用關(guān)鍵字super來引用。

 

二、關(guān)于方法

  • Java語言中寫一個方法和c語言中寫一個函數(shù)完全類似。類中的方法可分為實例方法和類方法(方法類型前面加關(guān)鍵字static)。 
  • 方法重載是指一個類中可以有多個方法具有相同的名字,但方法的參數(shù)必須不同,即或者是參數(shù)的個數(shù)不同,或者是參數(shù)的類型不同。 
  • 構(gòu)造方法是一種特殊的方法,它的名字必須與它所在的類的名字完全相同,并且不返回任何數(shù)據(jù)類型,即它是void型的(void可以省略不寫)。 
  • 實例方法既能對類變量操作,也能對實例變量操作。而類方法(帶static)只能對類變量進(jìn)行操作。實例方法可以調(diào)用類方法,類方法不能調(diào)用實例方法。 
  • 使用new運(yùn)算符和類的構(gòu)造方法為聲明的對象分配內(nèi)存,如果類中沒有構(gòu)造方法,系統(tǒng)會調(diào)用默認(rèn)的構(gòu)造方法(無參數(shù)的)。   
  • 當(dāng)類的字節(jié)碼文件加載到內(nèi)存時,類中的類方法就分配了相應(yīng)的入口地址,類方法可被該類創(chuàng)建的任何對象調(diào)用(可通過類名調(diào)用),類方法的入口地址直到程序退出才被取消。 
  • 當(dāng)類的字節(jié)碼文件加載到內(nèi)存時,類中的實例方法不會分配入口地址,當(dāng)該類創(chuàng)建對象后才分配。實例方法可以被該類創(chuàng)建的任何對象調(diào)用。類所創(chuàng)建的所有對象的實例方法的入口地址相同,當(dāng)所有的對象不存在時,實例方法的入口地址才被取消。
  • 無論是類方法或?qū)嵗椒ǎ?dāng)其被調(diào)用時,方法中的局部變量才被分配內(nèi)存空間,方法調(diào)用完畢,局部變量即刻釋放所占的內(nèi)存。
  • this關(guān)鍵字可以出現(xiàn)在類的實例方法中,代表使用該方法的當(dāng)前對象。
  • 如果一個方法聲明為final,則這個方法不能被重寫。
  • 如果一個類中含有abstract方法,那么這個類必須用abstrct來聲明。
  • 子類不能繼承父類的構(gòu)造方法,如果子類要使用父類的構(gòu)造方法,必須在子類的構(gòu)造方法中使用(使用關(guān)鍵字super表示父類),且必須在第一條語句中使用。
  • 如果子類想使用被子類隱藏了的父類的方法,可使用關(guān)鍵字super來引用。

 

三、關(guān)于類

  • 當(dāng)前程序可調(diào)用當(dāng)前包中的友好類(類聲明前無public修飾的)。
  • 不能用protected和private來聲明類。
  • 訪問權(quán)限的級別從高到低排列:public,protected,友好的,private。
  • 關(guān)于類的繼承:子類和父類在同一個包中時,子類自然繼承了其父類中不是private的成員變量和方法作為自己的成員變量和方法。如果子類和父類不在同一個包中,那么子類繼承了父類的protected、public聲明的成員變量和方法,不能繼承父類的友好變量和友好方法。
  • 如果一個類的聲明中沒有使用extends關(guān)鍵字,這個類被系統(tǒng)默認(rèn)為是Object的子類。Object是包java.lang中的類。
  • 如果一個類聲明為final,則它不能被繼承。
  • abstrct類不能用new運(yùn)算創(chuàng)建對象,必須產(chǎn)生其子類,由子類創(chuàng)建對象。如果一個類是abstrct類的子類,由它必須具體實現(xiàn)父類的abstract方法。一個abstract類只關(guān)心它的子類是否具有某種功能,并不關(guān)心功能的具體行為,功能的具體行為由子類負(fù)責(zé)實現(xiàn)。
  • Java不支持多繼承性,即一個類只能有一個父類。

 

四、關(guān)于接口

  • 接口(interface)包含常量定義和方法定義兩部分,接口體中只進(jìn)行方法的聲明,不提供方法的實現(xiàn)。
  • 一個類通過使用implements關(guān)鍵字聲明自己使用的接口,多個接口名之間用逗號隔開。如“class A implements I1,I2”。
  • 如果一個類使用了某個接口,那么這個類必須實現(xiàn)該接口的所有方法。接口中的方法默認(rèn)為public的。
  • 如果接口的方法返回的類型不是void的,則在類中實現(xiàn)該接口方法時,方法體中至少要有一個return語句。如果是void型的,類體可以無任何語句(只有“{ }”)。
  • 一個Java源文件就是由類和接口組成的。
  • 如果一個類沒有實現(xiàn)接口中的所有方法,那么這個類必須是abstrct類。
  • public聲明的接口可被所有的類使用,友好接口類(無public修飾)只能被同一個包中的類使用。

到此這篇關(guān)于Java面向?qū)ο蠡A(chǔ),類,變量,方法的文章就介紹到這了,更多相關(guān)Java面向?qū)ο蠡A(chǔ)內(nèi)容請搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!

原文鏈接:https://blog.csdn.net/qq_41636764/article/details/108781346

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 夜夜操天天干 | 爱干视频 | 亚洲欧洲精品成人久久奇米网 | 最新国产精品 | 福利网在线 | 天天操天天射天天 | 日韩欧美一二三区 | 91精品国产综合久久福利软件 | 午夜a级理论片915影院 | 国产精品福利在线观看 | 国产在线视频网 | 中文字幕在线精品 | 国产精品激情 | 免费一级视频在线观看 | 欧美福利在线观看 | 91精品国产视频 | 羞羞网站免费 | 91久久精品一区二区二区 | 亚洲欧美在线观看 | 狠狠色狠色综合曰曰 | 国产成人精品一区二区在线 | 午夜免费视频 | 免费一级片在线 | 91精品国产91久久久久久最新 | 欧美一区二区三区在线观看视频 | 国产黄色片一级 | 国产偷窥老熟盗摄视频 | 韩日在线观看视频 | 福利片一区二区 | 欧美日韩精品综合 | 狠狠艹 | 久久久激情| 国产成人网 | 久久久999精品视频 亚洲国产网站 | 91久久精品国产91久久性色tv | 韩日精品一区 | 欧美区在线 | 福利片中文字幕 | 欧美电影免费网站 | 国产色 | 黄色av网站在线观看 |