中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

建設(shè)銀行軟件官方網(wǎng)站下載百度客服系統(tǒng)

建設(shè)銀行軟件官方網(wǎng)站下載,百度客服系統(tǒng),3d模型素材庫(kù),南京潤(rùn)盛建設(shè)集團(tuán)有限公司網(wǎng)站目錄 一.內(nèi)部類 1.什么是內(nèi)部類 2.內(nèi)部類存在的原因 3. 內(nèi)部類的分類 4.內(nèi)部類的作用 二.成員內(nèi)部類 1.基本概念 2.成員內(nèi)部類的注意點(diǎn) 1.成員內(nèi)部類可以用private方法進(jìn)行修飾 2.成員內(nèi)部類可以直接訪問(wèn)外部類的私有屬性 3.外部類可以通過(guò)對(duì)象訪問(wèn)內(nèi)部類的私有屬性 …

目錄

一.內(nèi)部類

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

2.內(nèi)部類存在的原因

3. 內(nèi)部類的分類

4.內(nèi)部類的作用

二.成員內(nèi)部類

1.基本概念

2.成員內(nèi)部類的注意點(diǎn)

1.成員內(nèi)部類可以用private方法進(jìn)行修飾

2.成員內(nèi)部類可以直接訪問(wèn)外部類的私有屬性

3.外部類可以通過(guò)對(duì)象訪問(wèn)內(nèi)部類的私有屬性

4.成員內(nèi)部類中不可以定義static屬性和方法

?3.產(chǎn)生內(nèi)部類的對(duì)象

1.在外部類的內(nèi)部產(chǎn)生內(nèi)部類的對(duì)象

2.在外部類的外部產(chǎn)生內(nèi)部類的對(duì)象

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

1.基本概念

2.靜態(tài)內(nèi)部類的注意點(diǎn)

1.靜態(tài)內(nèi)部類可以通過(guò)對(duì)象訪問(wèn)內(nèi)部類的私有屬性

2.靜態(tài)內(nèi)部類可以直接訪問(wèn)外部類的靜態(tài)屬性和方法

3.外部類通過(guò)對(duì)象訪問(wèn)靜態(tài)內(nèi)部類中的私有屬性和方法

4.靜態(tài)內(nèi)部類中可以定義靜態(tài)變量也可以定義成員變量

3.產(chǎn)生靜態(tài)內(nèi)部類的對(duì)象

1.在外部類的內(nèi)部產(chǎn)生靜態(tài)內(nèi)部類

2.在外部類的外部產(chǎn)生靜態(tài)內(nèi)部類

四.成員內(nèi)部類和靜態(tài)內(nèi)部類的對(duì)比

1.實(shí)際案例

2.兩者差異

3.內(nèi)部類的作用

4.編譯后的class文件

五.方法內(nèi)部類

1.基本概念

2.方法內(nèi)部類的注意點(diǎn)

1.方法內(nèi)部類不能使用任何的訪問(wèn)修飾符

2.方法內(nèi)部類的聲明周期只在方法調(diào)用的過(guò)程中存在

3.方法內(nèi)部類中的訪問(wèn)范圍

4.方法內(nèi)部類形參不可改變

六.匿名內(nèi)部類

1.基本概念

2.匿名內(nèi)部類的示例

3.匿名內(nèi)部類的使用? ----參數(shù)使用匿名內(nèi)部類


一.內(nèi)部類

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

內(nèi)部類:一個(gè)類嵌套在另一個(gè)類的內(nèi)部,稱這個(gè)嵌套類為內(nèi)部類.

public class Outter {//內(nèi)部類class Inner{}
}

2.內(nèi)部類存在的原因

內(nèi)部類是封裝的一種體現(xiàn),

人類和心臟類的關(guān)系就是一種內(nèi)部類和外部類的關(guān)系

汽車發(fā)動(dòng)機(jī)和汽車關(guān)系也是一種內(nèi)部類和外部類的關(guān)系

3. 內(nèi)部類的分類

根據(jù)定義的位置和使用的關(guān)鍵字的不同,可以分為以下四種內(nèi)部類

  1. 成員內(nèi)部類
  2. 靜態(tài)內(nèi)部類
  3. 方法內(nèi)部類
  4. 匿名內(nèi)部類

4.內(nèi)部類的作用

  1. 內(nèi)外部類可以更方便的訪問(wèn)彼此的私有屬性
  2. 可以打破單繼承的局限

具體的表現(xiàn)在下面慢慢的具體分析

二.成員內(nèi)部類

1.基本概念

成員內(nèi)部類:直接定義在類中,不加static定義的內(nèi)部類就稱為成員內(nèi)部類

2.成員內(nèi)部類的注意點(diǎn)

提示:可以把成員內(nèi)部類類比為類中的成員方法

1.成員內(nèi)部類可以用private方法進(jìn)行修飾

我們都知道我們平常使用的類是不可以使用private關(guān)鍵字進(jìn)行修飾的,因?yàn)檫@樣在外部就無(wú)法訪問(wèn)到這個(gè)私有的類了,定義顯得沒(méi)有必要了.

但是成員內(nèi)部類是可以用private關(guān)鍵字修飾的,表示在外部無(wú)法直接創(chuàng)建私有的成員內(nèi)部類

public class Outter {private String name;//私有的內(nèi)部類private class Inner {}}

2.成員內(nèi)部類可以直接訪問(wèn)外部類的私有屬性

在內(nèi)部類Inner中,我們直接可以訪問(wèn)外部類的私有屬性和私有方法,直接調(diào)用,不需要?jiǎng)?chuàng)建對(duì)象,類比為成員方法直接調(diào)用類中的私有屬性和私有方法

直接調(diào)用的name相當(dāng)于Outter.this.name?

直接調(diào)用的fun()相當(dāng)于Outter.this.fun()

public class Outter {private String name;//內(nèi)部類private class Inner {private int num;private void test() {//直接在成員內(nèi)部類直接訪問(wèn)外部類的私有屬性System.out.println(name);fun();System.out.println("inner的test方法");}}private void fun() {System.out.println("外部類的fun方法");}}

3.外部類可以通過(guò)對(duì)象訪問(wèn)內(nèi)部類的私有屬性

外部類中是不可以直接訪問(wèn)內(nèi)部類的屬性和方法的,但是我們可以通過(guò)創(chuàng)建內(nèi)部類的對(duì)象來(lái)訪問(wèn)內(nèi)部類的私有屬性和方法.

如果是一個(gè)普通的類,內(nèi)部定義了私有的屬性和方法,我們即使創(chuàng)建了對(duì)象,也不可以訪問(wèn)內(nèi)部的私有屬性和方法,但是外部類中定義了內(nèi)部類的對(duì)象,我們是確實(shí)可以訪問(wèn)到內(nèi)部類的私有屬性和方法的

public class Outter {private String name;//內(nèi)部類private class Inner {private int num;private void test() {//直接在成員內(nèi)部類直接訪問(wèn)外部類的私有屬性System.out.println(name);System.out.println("inner的test方法");}}private void fun() {//產(chǎn)生內(nèi)部類的對(duì)象Inner inner = new Inner();//外部類中訪問(wèn)內(nèi)部類的屬性System.out.println(inner.num);inner.test();System.out.println("外部類的fun方法");}public static void main(String[] args) {Outter outter = new Outter();outter.fun();}
}

main方法的輸出

0
null
inner的test方法
外部類的fun方法

4.成員內(nèi)部類中不可以定義static屬性和方法

類比于成員方法,在成員方法中是不可以定義static的屬性的,因?yàn)榉椒ǖ恼{(diào)用需要對(duì)象來(lái)調(diào)用,而static的變量是不需要對(duì)象調(diào)用的,這顯然是矛盾的

?3.產(chǎn)生內(nèi)部類的對(duì)象

1.在外部類的內(nèi)部產(chǎn)生內(nèi)部類的對(duì)象

直接new出來(lái)內(nèi)部類的對(duì)象即可

類名稱 引用名稱=new 類名稱();

??????? Inner inner = new Inner();

2.在外部類的外部產(chǎn)生內(nèi)部類的對(duì)象

注意:如果成員內(nèi)部類私有(private),無(wú)法在內(nèi)部類的外部產(chǎn)生內(nèi)部類的對(duì)象

外部類名稱.內(nèi)部類名稱 內(nèi)部類引用=new 外部類名稱().new 內(nèi)部類名稱();

public class Test {public static void main(String[] args) {//在外部類的外部產(chǎn)生內(nèi)部類的對(duì)象Outter.Inner inner = new Outter().new Inner();}
}

類比于成員方法:成員方法必須通過(guò)類的對(duì)象調(diào)用

同理:要產(chǎn)生內(nèi)部類的對(duì)象,首先要產(chǎn)生外部類的對(duì)象

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

1.基本概念

靜態(tài)內(nèi)部類:直接定義在類的內(nèi)部,使用staic關(guān)鍵字修飾,就成為靜態(tài)內(nèi)部類

2.靜態(tài)內(nèi)部類的注意點(diǎn)

注意:可以把靜態(tài)內(nèi)部類類比于靜態(tài)方法

1.靜態(tài)內(nèi)部類可以通過(guò)對(duì)象訪問(wèn)內(nèi)部類的私有屬性

直接new外部類的對(duì)象,然后便可以訪問(wèn)其私有的屬性和方法

因?yàn)殪o態(tài)內(nèi)部類不需要依賴外部類的對(duì)象產(chǎn)生而產(chǎn)生,因此靜態(tài)內(nèi)部類中不能直接訪問(wèn)外部類的方法和屬性,必須通過(guò)外部類的對(duì)象來(lái)訪問(wèn),但是可以直接訪問(wèn)外部類的靜態(tài)屬性和方法

public class StaticOutter {private String name;static class inner {private int num;public void test() {//通過(guò)外部類的對(duì)象訪問(wèn)其私有屬性和方法StaticOutter staticOutter = new StaticOutter();staticOutter.fun();System.out.println(staticOutter.name);}}private void fun() {System.out.println("外部類的fun方法");}
}

2.靜態(tài)內(nèi)部類可以直接訪問(wèn)外部類的靜態(tài)屬性和方法

public class StaticOutter {private String name;static int age;static class inner {private int num;public void test() {//直接訪問(wèn)外部類的靜態(tài)屬性和方法System.out.println(age);method();//通過(guò)外部類的對(duì)象訪問(wèn)其私有屬性和方法StaticOutter staticOutter = new StaticOutter();staticOutter.fun();System.out.println(staticOutter.name);}}public static void method() {System.out.println("外部類的method方法");}private void fun() {System.out.println("外部類的fun方法");}
}

3.外部類通過(guò)對(duì)象訪問(wèn)靜態(tài)內(nèi)部類中的私有屬性和方法

和成員內(nèi)部類中的外部類訪問(wèn)內(nèi)部類一樣

public class StaticOutter {private String name;static int age;static class Inner {private int num;public void test() {//直接訪問(wèn)外部類的靜態(tài)屬性和方法System.out.println(age);method();//通過(guò)外部類的對(duì)象訪問(wèn)其私有屬性和方法StaticOutter staticOutter = new StaticOutter();staticOutter.fun();System.out.println(staticOutter.name);}}public static void method() {System.out.println("外部類的method方法");}private void fun() {//外部類通過(guò)對(duì)象訪問(wèn)靜態(tài)內(nèi)部類中的私有屬性和方法 Inner inner = new Inner();System.out.println(inner.num);System.out.println("外部類的fun方法");}
}

4.靜態(tài)內(nèi)部類中可以定義靜態(tài)變量也可以定義成員變量

靜態(tài)內(nèi)部類可以看做相當(dāng)于一個(gè)普通的類,只不過(guò)嵌套在了外部類的里面了而已

public class StaticOutter {private String name;static class Inner {private int num;static String address;public static void method(){System.out.println("靜態(tài)內(nèi)部類的靜態(tài)方法method");}public void test() {//通過(guò)外部類的對(duì)象訪問(wèn)其私有屬性和方法StaticOutter staticOutter = new StaticOutter();staticOutter.fun();System.out.println(staticOutter.name);}}private void fun() {//外部類通過(guò)對(duì)象訪問(wèn)靜態(tài)內(nèi)部類中的私有屬性和方法Inner inner = new Inner();System.out.println(inner.num);System.out.println("外部類的fun方法");}
}

3.產(chǎn)生靜態(tài)內(nèi)部類的對(duì)象

1.在外部類的內(nèi)部產(chǎn)生靜態(tài)內(nèi)部類

和成員內(nèi)部類一樣

類名稱 引用名稱=new 類名稱();

??????? Inner inner = new Inner();

2.在外部類的外部產(chǎn)生靜態(tài)內(nèi)部類

外部類名稱.內(nèi)部類名稱 內(nèi)部類引用=new 外部類名稱.內(nèi)部類名稱();

靜態(tài)內(nèi)部類不需要外部類的對(duì)象,因此不需要?jiǎng)?chuàng)建外部類的對(duì)象

public class Test {public static void main(String[] args) {//在外部類的外部產(chǎn)生靜態(tài)內(nèi)部類的對(duì)象StaticOutter.Inner inner = new StaticOutter.Inner();}
}

四.成員內(nèi)部類和靜態(tài)內(nèi)部類的對(duì)比

1.實(shí)際案例

成員內(nèi)部類和外部類相當(dāng)于人類和心臟,心臟的產(chǎn)生不能離開(kāi)人的產(chǎn)生

而靜態(tài)內(nèi)部類和外部類相當(dāng)于車和發(fā)動(dòng)機(jī),發(fā)動(dòng)機(jī)可以立刻車獨(dú)立存在

2.兩者差異

成員內(nèi)部類中包含了外部類的對(duì)象,能直接訪問(wèn)外部類的成員屬性,不能定義靜態(tài)屬性

靜態(tài)內(nèi)部類中沒(méi)有包含外部類的對(duì)象,不能直接訪問(wèn)外部類的成員屬性,能定義靜態(tài)屬性和成員屬性

3.內(nèi)部類的作用

1.經(jīng)過(guò)以上的分析,我們可以總結(jié)出內(nèi)部類的一大作用就是可以直接訪問(wèn)外部類的私有屬性和方法

2.我們知道一個(gè)子類只能繼承一個(gè)父類,我們?nèi)绻褂脙?nèi)部類,便可以寫(xiě)出類似多繼承的子類,規(guī)避單繼承的局限性,此時(shí)外部類中就包含了A和B的所有屬性和方法

class A {}class B {}public class InnerClassExtends {class InnerA extends A {}class InnerB extends B {}}

4.編譯后的class文件

Outter是外部類,Inner是內(nèi)部類,中間用$符分隔開(kāi)

五.方法內(nèi)部類

1.基本概念

方法內(nèi)部類:直接定義在方法中的類

2.方法內(nèi)部類的注意點(diǎn)

注意:方法內(nèi)部類可以類似于參數(shù)

1.方法內(nèi)部類不能使用任何的訪問(wèn)修飾符

public class MethodInner {private String name;public void fun() {//在方法中定義的類技術(shù)就是方法內(nèi)部類class Inner {}}
}

2.方法內(nèi)部類的聲明周期只在方法調(diào)用的過(guò)程中存在

方法調(diào)用結(jié)束之后自動(dòng)銷毀,方法內(nèi)部類對(duì)方法外部完全隱藏

public class MethodInner {private String name;public static void fun() {//在方法中定義的類技術(shù)就是方法內(nèi)部類class Inner {private int num;private void test() {//可以訪問(wèn)到外部類的私有System.out.println(new MethodInner().name);}}//可以通過(guò)對(duì)象訪問(wèn)到方法內(nèi)部類的私有屬性和方法//在這個(gè)方法之外無(wú)法new Inner對(duì)象Inner inner = new Inner();inner.test();System.out.println(inner.num);}
}

3.方法內(nèi)部類中的訪問(wèn)范圍

方法內(nèi)部類中的方法是否需要new外部類取決于外部方法是static還是普通的

public class MethodInner {private String name;public void fun() {//在方法中定義的類技術(shù)就是方法內(nèi)部類class Inner {private int num;public void test() {//可以訪問(wèn)到外部類的私有System.out.println(name);}}}
}
public class MethodInner {private String name;public static void fun() {//在方法中定義的類技術(shù)就是方法內(nèi)部類class Inner {private int num;public void test() {//可以訪問(wèn)到外部類的私有System.out.println(new MethodInner().name);}}}
}

4.方法內(nèi)部類形參不可改變

若方法內(nèi)部類使用方法的形參,這個(gè)參數(shù)必須為形式上的參數(shù)(不能在類中修改該參數(shù)的值,JDK8之后),JDK8之前必須顯式的定義為final

在方法內(nèi)部類中調(diào)用了方法的形參,在方法內(nèi)也不能改變其值;我們可以思考一下為什么.因?yàn)槿绻覀冊(cè)诜椒▋?nèi)部類中調(diào)用了方法的形參,而此時(shí)我們?cè)诜椒ㄖ行薷牧诵螀⒌闹?無(wú)法確定調(diào)用的形參的值是原始的,還是修改過(guò)后的形參的值

總結(jié):在方法內(nèi)部類中只能訪問(wèn)方法內(nèi)的參數(shù),不能修改其值

方法形參是否有final取決于方法形參中是否使用了形參

六.匿名內(nèi)部類

1.基本概念

匿名內(nèi)部類:定義在方法之中,主要是在方法的形參上使用,這個(gè)類沒(méi)有名字,一般默認(rèn)繼承一個(gè)類或者一個(gè)接口

2.匿名內(nèi)部類的示例

interface IMessage {void print();
}public class NonNameMethod {public void fun() {new IMessage() {@Overridepublic void print() {}};}
}

上邊的結(jié)構(gòu)相當(dāng)于這樣進(jìn)行轉(zhuǎn)換的

3.匿名內(nèi)部類的使用? ----參數(shù)使用匿名內(nèi)部類

    public static void main(String[] args) {compare(new Comparator() {@Overridepublic int compare(Object o1, Object o2) {return 0;}});}public static void compare(Comparator c) {System.out.println("compare方法");}

上面的compare方法需要傳入一個(gè)接口對(duì)象,這個(gè)時(shí)候我們需要傳入一個(gè)接口的實(shí)現(xiàn)類,實(shí)現(xiàn)向上轉(zhuǎn)型,這個(gè)時(shí)候我們就需要使用匿名實(shí)現(xiàn)類了

http://www.risenshineclean.com/news/59111.html

相關(guān)文章:

  • 如何建設(shè)購(gòu)物網(wǎng)站seo培訓(xùn)多少錢
  • 做公司的網(wǎng)站有哪些東西嗎網(wǎng)站加速
  • 教育機(jī)構(gòu)電商網(wǎng)站建設(shè)加盟seo英文
  • 油漆網(wǎng)站設(shè)計(jì)株洲網(wǎng)絡(luò)推廣
  • 書(shū)籍網(wǎng)站設(shè)計(jì)寧波網(wǎng)站推廣公司有哪些
  • 湖南網(wǎng)站設(shè)計(jì)公司西安優(yōu)化seo
  • 做像淘寶網(wǎng)的網(wǎng)站重慶森林講了什么故事
  • 發(fā)布課程的網(wǎng)站模板百度授權(quán)代理商
  • 佛山網(wǎng)站建設(shè)兼職今天剛剛發(fā)生的新聞事故
  • 網(wǎng)站建設(shè)扁平化深圳百度網(wǎng)站排名優(yōu)化
  • 淘寶做基礎(chǔ)銷量怎么網(wǎng)站企業(yè)類網(wǎng)站有哪些例子
  • 網(wǎng)站設(shè)計(jì)的價(jià)格鴻科經(jīng)緯教網(wǎng)店運(yùn)營(yíng)推廣
  • 小企業(yè)如何優(yōu)化網(wǎng)站建設(shè)招商外包
  • 淮北做網(wǎng)站的公司有哪些做推廣的公司
  • 龍陵縣住房和城鄉(xiāng)建設(shè)局網(wǎng)站網(wǎng)站及搜索引擎優(yōu)化建議
  • 沈陽(yáng)網(wǎng)站建設(shè)信息小廣告公司如何起步
  • 微信小程序開(kāi)發(fā)技術(shù)aso優(yōu)化的主要內(nèi)容
  • 企業(yè)自建b2b電子商務(wù)網(wǎng)站有哪些國(guó)際軍事新聞最新消息
  • 網(wǎng)站推廣渠道怎么做百度中心人工電話號(hào)碼
  • 國(guó)外做爰網(wǎng)站優(yōu)化大師免費(fèi)版
  • 行業(yè)門戶網(wǎng)站的優(yōu)化怎么做yps行業(yè)門戶系統(tǒng)seo哪里有培訓(xùn)
  • 日本做動(dòng)漫軟件視頻網(wǎng)站有哪些seo實(shí)戰(zhàn)密碼第三版pdf下載
  • 鄭州做網(wǎng)站比較好公司怎么把自己的網(wǎng)站發(fā)布到網(wǎng)上
  • 做網(wǎng)站需要寬帶網(wǎng)推是什么
  • 政府部門網(wǎng)站建設(shè)方案書(shū)google play官網(wǎng)下載
  • wordpress fold主題如何優(yōu)化搜索引擎的準(zhǔn)確性
  • 網(wǎng)站建設(shè)app開(kāi)發(fā)公司西安抖音seo
  • 做電影網(wǎng)站需要告訴網(wǎng)絡(luò)成都網(wǎng)站推廣公司
  • 廣告做圖網(wǎng)站seo包年優(yōu)化
  • wordpress心理教育網(wǎng)站西安百度推廣優(yōu)化公司