日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
一篇文章教會(huì)你使用Java內(nèi)部類(lèi)、成員內(nèi)部類(lèi)、靜態(tài)內(nèi)部類(lèi)和方法內(nèi)部類(lèi)

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

從事西信服務(wù)器托管,服務(wù)器租用,云主機(jī),虛擬空間,域名注冊(cè),CDN,網(wǎng)絡(luò)代維等服務(wù)。

(一)什么是內(nèi)部類(lèi)?

可以在類(lèi)中再定義類(lèi),就叫做內(nèi)部類(lèi),這個(gè)內(nèi)部類(lèi)所在的類(lèi),就叫做外部類(lèi)。

(二)內(nèi)部類(lèi)作用

1.內(nèi)部類(lèi)提供更好的封裝,把內(nèi)部類(lèi)隱藏在外部類(lèi)之內(nèi),不允許同一個(gè)包中的其他類(lèi)訪問(wèn)該類(lèi)。

2.內(nèi)部類(lèi)成員可以直接訪問(wèn)外部類(lèi)的私有數(shù)據(jù),因?yàn)閮?nèi)部類(lèi)被當(dāng)成外部類(lèi)的成員。然而外部類(lèi)不能訪問(wèn)內(nèi)部類(lèi)的實(shí)現(xiàn)細(xì)節(jié)(如內(nèi)部類(lèi)的成員變量)。

二、成員內(nèi)部類(lèi)

1.什么是成員內(nèi)部類(lèi)

在一個(gè)類(lèi)中可以定義成員變量、成員方法外,還可以定義類(lèi)就叫做成員內(nèi)部類(lèi)。成員內(nèi)部類(lèi)可以訪問(wèn)外部類(lèi)的所有成員。

2.外部類(lèi)訪問(wèn)內(nèi)部類(lèi),首先創(chuàng)建外部類(lèi)對(duì)象去創(chuàng)建內(nèi)部類(lèi)對(duì)象,創(chuàng)建內(nèi)部類(lèi)對(duì)象的語(yǔ)法格式

外部類(lèi)名.內(nèi)部類(lèi)名 變量名=new 外部類(lèi)名{}.new 內(nèi)部類(lèi)名{}

3.怎么定義成員內(nèi)部類(lèi)案例

例如:

 
 
 
 
  1. class A{ 
  2. //定義類(lèi)的成員變量 
  3. private String name="張三"; 
  4. private int age=28; 
  5. //定義一個(gè)成員方法,方法去訪問(wèn)內(nèi)部類(lèi) 
  6. public void test(){ 
  7.         B b=new B(); 
  8.         b.say(); 
  9. //定義一個(gè)成員內(nèi)部類(lèi) 
  10. class B{ 
  11.         public void say(){ 
  12.             //成員內(nèi)部類(lèi)方法訪問(wèn)外部類(lèi)的成員變量 
  13.             System.out.println("你好!我叫"+name+"今年"+age+"歲!"); 
  14.         } 
  15.  
  16. public class p17 { 
  17. public static void main(String[] args) { 
  18.     A a=new A();//創(chuàng)建外部類(lèi) 
  19.     a.test();//調(diào)用test()方法 
  20.     } 

輸出的結(jié)果是:

 
 
 
 
  1. 你好!我叫張三今年28歲! 

A是一個(gè)外部類(lèi),在這個(gè)類(lèi)中定義了一個(gè)內(nèi)部類(lèi)B和test()成員方法,在B類(lèi)中有一個(gè)say()方法是成員內(nèi)部類(lèi)去訪問(wèn)外部類(lèi)的成員變量name和age,在test()方法中創(chuàng)建內(nèi)部類(lèi)B實(shí)例對(duì)象,調(diào)用say()方法。如果想外部類(lèi)去訪問(wèn)內(nèi)部類(lèi),首先創(chuàng)建外部類(lèi)對(duì)象去創(chuàng)建內(nèi)部類(lèi)對(duì)象,創(chuàng)建內(nèi)部類(lèi)對(duì)象代碼如下:

 
 
 
 
  1. A.B a=new A().new B();//創(chuàng)建內(nèi)部類(lèi) 
  2. a.say();//調(diào)用test()方法 

三、靜態(tài)內(nèi)部類(lèi)

1.什么是靜態(tài)內(nèi)部類(lèi)

內(nèi)部類(lèi)如果使用static關(guān)鍵字來(lái)聲明,這個(gè)內(nèi)部類(lèi)叫做靜態(tài)內(nèi)部類(lèi)。它是可以在不創(chuàng)建外部類(lèi)對(duì)象被實(shí)例化。

2.創(chuàng)建靜態(tài)內(nèi)部類(lèi)語(yǔ)法格式

 
 
 
 
  1. 外部類(lèi)名.內(nèi)部類(lèi)名 變量名=new 外部類(lèi)名.內(nèi)部類(lèi)名() 

3.如何使用靜態(tài)內(nèi)部案例

例如:

 
 
 
 
  1. class A{ 
  2. //定義類(lèi)的成員變量 
  3. private static String name="李華"; 
  4. private static int age=18; 
  5. //定義靜態(tài)內(nèi)部類(lèi) 
  6. static class B{ 
  7.   void say(){ 
  8.           System.out.println("你好!我叫"+name+"今年"+age+"歲!"); 
  9.     } 
  10.   } 
  11. public class p18 { 
  12.   public static void main(String[] args) { 
  13.   // TODO Auto-generated method stub 
  14.     A.B a=new A.B();//創(chuàng)建內(nèi)部類(lèi) 
  15.     a.say();//調(diào)用內(nèi)部類(lèi)的方法 
  16.     } 

輸出的結(jié)果是:

你好!我叫李華今年18歲!

從上面的代碼中,內(nèi)部類(lèi)B使用static關(guān)鍵字來(lái)聲明,表示一個(gè)靜態(tài)內(nèi)部類(lèi)。在靜態(tài)內(nèi)部類(lèi)中只可以訪問(wèn)外部類(lèi)的靜態(tài)變量。如果訪問(wèn)外部類(lèi)的成員變量必須通過(guò)外部類(lèi)的實(shí)例去訪問(wèn),靜態(tài)內(nèi)部不會(huì)有外部類(lèi)的引用!

四、方法內(nèi)部類(lèi)

1.什么是方法內(nèi)部類(lèi)

內(nèi)部類(lèi)定義在外部類(lèi)的方法中,方法內(nèi)部類(lèi)只可以在這個(gè)方法的內(nèi)部可見(jiàn),也就是只可以在這個(gè)方法內(nèi)使用。

2.方法內(nèi)部類(lèi)不可以在外部類(lèi)方法以外去使用,方法內(nèi)部類(lèi)不能使用訪問(wèn)控制符和static修飾符。

3.怎么使用方法內(nèi)部類(lèi)

例如:

 
 
 
 
  1. class A{ 
  2. //定義類(lèi)的成員變量 
  3. private String name="李華"; 
  4. private int score=88; 
  5. public void test(){ 
  6. //在方法中定義內(nèi)部類(lèi) 
  7. class B{ 
  8.         void show(){ 
  9.             //訪問(wèn)外部類(lèi)的成員變量 
  10.             System.out.println("姓名:"+name+"  "+"英語(yǔ)成績(jī):"+score+"分!"); 
  11.         } 
  12.   B b=new B();//創(chuàng)建內(nèi)部類(lèi)對(duì)象 
  13.   b.show();//調(diào)用內(nèi)部類(lèi)方法 
  14.   } 
  15. public class p19 { 
  16. public static void main(String[] args) { 
  17. // TODO Auto-generated method stub 
  18.   A a=new A();//創(chuàng)建外部類(lèi)對(duì)象 
  19.   a.test();//調(diào)用test()方法 
  20.   } 

輸出的結(jié)果是:

 
 
 
 
  1. 姓名:李華  英語(yǔ)成績(jī):88分! 

從上面代碼中,在A類(lèi)的test()方法中定義了一個(gè)內(nèi)部類(lèi)B,因?yàn)閮?nèi)部類(lèi)B是方法內(nèi)部類(lèi),程序在運(yùn)行只能在方法創(chuàng)建類(lèi)的實(shí)例對(duì)象然后調(diào)用show()方法,方法內(nèi)部類(lèi)是可以訪問(wèn)外部類(lèi)的成員變量。

五、總結(jié)

本文主要介紹了內(nèi)部類(lèi)的成員內(nèi)部類(lèi)、靜態(tài)內(nèi)部類(lèi)、方法內(nèi)部類(lèi)。

成員內(nèi)部類(lèi)是在一個(gè)類(lèi)中可以定義成員變量、成員方法外,還可以定義類(lèi)。通過(guò)一個(gè)怎么定義成員內(nèi)部類(lèi)案例幫助理解這個(gè)用法。

靜態(tài)內(nèi)部類(lèi)是使用static關(guān)鍵字來(lái)聲明,通過(guò)一個(gè)如何使用靜態(tài)內(nèi)部類(lèi)案例理解這個(gè)用法。

方法內(nèi)部類(lèi)是內(nèi)部類(lèi)定義在外部類(lèi)的方法中,方法內(nèi)部類(lèi)只可以在這個(gè)方法的內(nèi)部可見(jiàn),也就是只可以在這個(gè)方法內(nèi)使用。

希望大家通過(guò)本文的學(xué)習(xí),對(duì)你有所幫助!

本文轉(zhuǎn)載自微信公眾號(hào)「 Java進(jìn)階學(xué)習(xí)交流」,可以通過(guò)以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系 Java進(jìn)階學(xué)習(xí)交流公眾號(hào)。


分享名稱(chēng):一篇文章教會(huì)你使用Java內(nèi)部類(lèi)、成員內(nèi)部類(lèi)、靜態(tài)內(nèi)部類(lèi)和方法內(nèi)部類(lèi)
文章路徑:http://m.5511xx.com/article/dhjseep.html