国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【從零開(kāi)始學(xué)習(xí)JAVA | 第十九篇】初識(shí)內(nèi)部類(lèi)

這篇具有很好參考價(jià)值的文章主要介紹了【從零開(kāi)始學(xué)習(xí)JAVA | 第十九篇】初識(shí)內(nèi)部類(lèi)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

【從零開(kāi)始學(xué)習(xí)JAVA | 第十九篇】初識(shí)內(nèi)部類(lèi),【從零開(kāi)始學(xué)習(xí)JAVA】,學(xué)習(xí)

前言:

內(nèi)部類(lèi)是類(lèi)的五大成員。一個(gè)類(lèi)的其他的成員分別是屬性,方法,構(gòu)造方法,代碼塊。本文將詳細(xì)介紹什么是內(nèi)部類(lèi),以及內(nèi)部類(lèi)的意義。

內(nèi)部類(lèi):

內(nèi)部類(lèi)(Inner Class)是 Java 中的一個(gè)特殊概念,它指的是一個(gè)類(lèi)定義在另一個(gè)類(lèi)內(nèi)部的類(lèi)。內(nèi)部類(lèi)可以訪(fǎng)問(wèn)外部類(lèi)的成員,包括私有的成員和方法。內(nèi)部類(lèi)還可以訪(fǎng)問(wèn)同一個(gè)外部類(lèi)中其他內(nèi)部類(lèi)的成員。內(nèi)部類(lèi)是 Java 實(shí)現(xiàn)面向?qū)ο蟮囊粋€(gè)重要機(jī)制,常用于事件驅(qū)動(dòng)編程中。

Java 中內(nèi)部類(lèi)的分類(lèi)有以下幾種:

1. 成員內(nèi)部類(lèi):定義在外部類(lèi)中,但是在外部類(lèi)的成員方法之外。
2. 靜態(tài)內(nèi)部類(lèi):定義在外部類(lèi)中,但是在外部類(lèi)的靜態(tài)方法中或者外部類(lèi)的靜態(tài)區(qū)域中。
3. 局部?jī)?nèi)部類(lèi):定義在外部類(lèi)的方法體中或者一個(gè)作用域內(nèi)。

下面是一個(gè)成員內(nèi)部類(lèi)的示例:


public class Outer {
? ? private int num = 1;
? ? private String name = "Outer";
? ? public class Inner {
? ? ? ? public void print() {
? ? ? ? ? ? System.out.println("num is " + num + ", name is " + name);
? ? ? ? }
? ? }
}

在以上代碼中,定義了外部類(lèi) `Outer` 和成員內(nèi)部類(lèi) `Inner`,`Inner` 類(lèi)可以訪(fǎng)問(wèn) `Outer` 類(lèi)中的私有成員 `num` 和 `name`。

下面是一個(gè)示例程序,演示如何創(chuàng)建和使用成員內(nèi)部類(lèi):

public class Test {
? ? public static void main(String[] args) {
? ? ? ? Outer outer = new Outer();
? ? ? ? Outer.Inner inner = outer.new Inner();
? ? ? ? inner.print();
? ? }
}

在以上示例中,首先創(chuàng)建了外部類(lèi) `Outer` 的實(shí)例 `outer`,然后使用實(shí)例 `outer` 創(chuàng)建了內(nèi)部類(lèi) `Inner` 的實(shí)例 `inner`,最后調(diào)用 `inner` 的方法 `print()` 輸出結(jié)果。

總之,內(nèi)部類(lèi)是 Java 實(shí)現(xiàn)面向?qū)ο缶幊痰闹匾獧C(jī)制,可以訪(fǎng)問(wèn)外部類(lèi)的成員和方法,是實(shí)現(xiàn)一些事件驅(qū)動(dòng)或者復(fù)雜邏輯的必要手段之一。

內(nèi)部類(lèi)的分類(lèi):

1.成員內(nèi)部類(lèi):

成員內(nèi)部類(lèi)是和外部類(lèi)的成員變量和方法平級(jí)的,可以訪(fǎng)問(wèn)外部類(lèi)的所有變量和方法,它的定義方式如下:

public class Outer {
? ? private int data;
? ? public void method() {
? ? ? ? Inner inner = new Inner();
? ? ? ? inner.print();
? ? }
? ? class Inner {
? ? ? ? public void print() {
? ? ? ? ? ? System.out.println(data);
? ? ? ? }
? ? }
}

上面的代碼定義了一個(gè) Outer 類(lèi)和一個(gè) Inner(Nested) 類(lèi),在 Outer 類(lèi)中定義了一個(gè)成員內(nèi)部類(lèi) Inner,它可以訪(fǎng)問(wèn) Outer 類(lèi)中的 data 變量。

使用成員內(nèi)部類(lèi)的方式如下:

Outer outer = new Outer();
outer.method(); // 輸出 "0"

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

靜態(tài)內(nèi)部類(lèi)是在外部類(lèi)內(nèi)部定義的一個(gè)靜態(tài)類(lèi),它獨(dú)立于外部類(lèi)的對(duì)象,也就是說(shuō),即使沒(méi)有創(chuàng)建外部類(lèi)的對(duì)象,我們?nèi)匀豢梢允褂渺o態(tài)內(nèi)部類(lèi),靜態(tài)內(nèi)部類(lèi)的定義方式如下:

public class Outer {
? ? private static int data;
? ? public static class Inner {
? ? ? ? public void print() {
? ? ? ? ? ? System.out.println(data);
? ? ? ? }
? ? }
}

使用靜態(tài)內(nèi)部類(lèi)的方式如下:

Outer.Inner inner = new Outer.Inner();
inner.print(); // 輸出 "0"

這里需要注意,靜態(tài)內(nèi)部類(lèi)中只能訪(fǎng)問(wèn)外部類(lèi)的靜態(tài)變量或靜態(tài)方法。

3. 局部?jī)?nèi)部類(lèi)

局部?jī)?nèi)部類(lèi)是定義在方法內(nèi)部的內(nèi)部類(lèi),只能在該方法內(nèi)部使用,它的定義方式如下:


public class Outer {
? ? private int data;
? ? public void method() {
? ? ? ? class Inner {
? ? ? ? ? ? public void print() {
? ? ? ? ? ? ? ? System.out.println(data);
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? Inner inner = new Inner();
? ? ? ? inner.print();
? ? }
}

上面的代碼定義了一個(gè)局部?jī)?nèi)部類(lèi) Inner,它可以訪(fǎng)問(wèn)外部類(lèi)中的 data 變量。

使用局部?jī)?nèi)部類(lèi)的方式如下:


Outer outer = new Outer();
outer.method(); // 輸出 "0"

4. 匿名內(nèi)部類(lèi)

匿名內(nèi)部類(lèi)是沒(méi)有名字的內(nèi)部類(lèi),只能一次性使用,它通常用于實(shí)現(xiàn)接口和抽象類(lèi)的方法,它的定義方式如下:


public interface MyInterface {
? ? void method();
}

public class MyClass {
? ? public void print() {
? ? ? ? MyInterface myInterface = new MyInterface() {
? ? ? ? ? ? public void method() {
? ? ? ? ? ? ? ? System.out.println("Hello World");
? ? ? ? ? ? }
? ? ? ? };
? ? ? ? myInterface.method();
? ? }
}

上面的代碼中,MyInterface 是一個(gè)接口,MyClass 中 print() 方法中使用了匿名內(nèi)部類(lèi)實(shí)現(xiàn)了 MyInterface 的 method() 方法。

使用匿名內(nèi)部類(lèi)的方式如下:

MyClass myClass = new MyClass();
myClass.print(); // 輸出 "Hello World"

以上是幾種常見(jiàn)的內(nèi)部類(lèi)的定義和使用方式,內(nèi)部類(lèi)的使用非常靈活,可以通過(guò)內(nèi)部類(lèi)實(shí)現(xiàn)許多功能,并且它具有訪(fǎng)問(wèn)外部類(lèi)私有成員的能力,但是由于內(nèi)部類(lèi)的存在,代碼的可讀性和可維護(hù)性會(huì)相應(yīng)降低,因此應(yīng)該謹(jǐn)慎使用。

總結(jié):

內(nèi)部類(lèi)的出現(xiàn)進(jìn)一步擴(kuò)展了類(lèi)的功能,使得類(lèi)的功能更加豐富,內(nèi)部類(lèi)的種類(lèi)繁多,但我們對(duì)于這一塊只要求掌握就可以了,不必做過(guò)深的研究。

如果我的內(nèi)容對(duì)你有幫助,請(qǐng)點(diǎn)贊,評(píng)論,收藏創(chuàng)作不易,大家的支持就是我堅(jiān)持下去的動(dòng)力!

【從零開(kāi)始學(xué)習(xí)JAVA | 第十九篇】初識(shí)內(nèi)部類(lèi),【從零開(kāi)始學(xué)習(xí)JAVA】,學(xué)習(xí)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-616767.html

到了這里,關(guān)于【從零開(kāi)始學(xué)習(xí)JAVA | 第十九篇】初識(shí)內(nèi)部類(lèi)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【從零開(kāi)始學(xué)習(xí)JAVA | 第十五篇】 多態(tài)

    【從零開(kāi)始學(xué)習(xí)JAVA | 第十五篇】 多態(tài)

    本篇我們來(lái)解釋一下什么是多態(tài)關(guān)系,多態(tài)關(guān)系屬于面向?qū)ο笕筇卣鞯淖詈笠粋€(gè),可以說(shuō)面向?qū)ο蟮闹攸c(diǎn)就在多態(tài),因此我們要學(xué)好面向?qū)ο缶幊趟枷?,就要學(xué)好多態(tài)。 ????????Java中的多態(tài)是指 同一類(lèi)對(duì)象在不同情況下可能表現(xiàn)出不同的形態(tài)和行為。 它包括了 方法重

    2024年02月10日
    瀏覽(23)
  • 【從零開(kāi)始學(xué)習(xí)JAVA | 第十八篇】接口介紹

    【從零開(kāi)始學(xué)習(xí)JAVA | 第十八篇】接口介紹

    目錄 前言: 接口: 如何定義一個(gè)接口: 如何使用一個(gè)接口: 接口中成員的特點(diǎn): 接口與類(lèi)的區(qū)別:?? 接口的應(yīng)用: 總結(jié): ????????接口其實(shí)是為了彌補(bǔ)繼承的缺點(diǎn): 我們無(wú)法讓父類(lèi)完美的適應(yīng)每一個(gè)子類(lèi)的要求 。 例如我們有一個(gè)動(dòng)物類(lèi)的父類(lèi),有一個(gè)蝌蚪類(lèi),魚(yú)

    2024年02月10日
    瀏覽(21)
  • 【從零開(kāi)始學(xué)習(xí)JAVA | 第三十七篇】初識(shí)多線(xiàn)程

    【從零開(kāi)始學(xué)習(xí)JAVA | 第三十七篇】初識(shí)多線(xiàn)程

    目錄 前言: ?編輯 引入: 多線(xiàn)程: ? ? ? ? 什么是多線(xiàn)程: ? ? ? ? 多線(xiàn)程的意義: ?? ? ? ?多線(xiàn)程的應(yīng)用場(chǎng)景: 總結(jié): ? ? ? ? ? ? ? ? 本章節(jié)我們將開(kāi)始學(xué)習(xí)多線(xiàn)程,多線(xiàn)程是一個(gè)很重要的知識(shí)點(diǎn),他在我們實(shí)際開(kāi)發(fā)中應(yīng)用廣泛并且基礎(chǔ),可以說(shuō)掌握多線(xiàn)程編寫(xiě)程

    2024年02月14日
    瀏覽(572)
  • 第十九篇 fetch請(qǐng)求

    第十九篇 fetch請(qǐng)求

    ? ? ? ? 本篇就開(kāi)始講到關(guān)于請(qǐng)求的內(nèi)容了,當(dāng)然關(guān)于 Vue 的大部分還是會(huì)想到axios,因?yàn)檫@是官方推薦用的,了解 Vue 的知道在axios之前還有一個(gè)vue-resource,后來(lái)也由于作者尤雨溪聲明vue-resource 已經(jīng)不維護(hù)了,推薦使用這個(gè)axios,那么在此之前先來(lái)講在這個(gè)fetch,為什么呢?因

    2024年02月09日
    瀏覽(23)
  • 從零開(kāi)始學(xué)習(xí) Java:簡(jiǎn)單易懂的入門(mén)指南之抽象類(lèi)&接口&內(nèi)部類(lèi)(十一)

    從零開(kāi)始學(xué)習(xí) Java:簡(jiǎn)單易懂的入門(mén)指南之抽象類(lèi)&接口&內(nèi)部類(lèi)(十一)

    1.1.1 抽象類(lèi)引入 ? 父類(lèi)中的方法,被它的子類(lèi)們重寫(xiě),子類(lèi)各自的實(shí)現(xiàn)都不盡相同。那么父類(lèi)的方法聲明和方法主體,只有聲明還有意義,而方法主體則沒(méi)有存在的意義了(因?yàn)樽宇?lèi)對(duì)象會(huì)調(diào)用自己重寫(xiě)的方法)。換句話(huà)說(shuō),父類(lèi)可能知道子類(lèi)應(yīng)該有哪個(gè)功能,但是功能具體怎

    2024年02月13日
    瀏覽(18)
  • 二十三種設(shè)計(jì)模式第十九篇--命令模式

    二十三種設(shè)計(jì)模式第十九篇--命令模式

    命令模式是一種行為設(shè)計(jì)模式, 它將請(qǐng)求封裝成一個(gè)獨(dú)立的對(duì)象,從而允許您以參數(shù)化的方式將客戶(hù)端代碼與具體實(shí)現(xiàn)解耦 。在命令模式中, 命令對(duì)象充當(dāng)調(diào)用者和接收者之間的中介 。這使您能夠根據(jù)需要將請(qǐng)求排隊(duì)、記錄請(qǐng)求日志、撤銷(xiāo)操作等。 命令模式的核心組成部

    2024年02月14日
    瀏覽(26)
  • 【MySQL數(shù)據(jù)庫(kù) | 第十九篇】SQL性能分析工具

    【MySQL數(shù)據(jù)庫(kù) | 第十九篇】SQL性能分析工具

    目錄 ? 前言: SQL執(zhí)行頻率: 慢查詢(xún)?nèi)罩荆?profile: profile各個(gè)指令: 總結(jié): ????????本篇我們將為大家講解SQL性能的分析工具,而只有熟練的掌握了性能分析的工具,才可以更好的對(duì)SQL語(yǔ)句進(jìn)行優(yōu)化。雖然我們?cè)谧约壕毩?xí)的時(shí)候?qū)@種優(yōu)化感知并不明顯,但是如果我們要

    2024年02月09日
    瀏覽(95)
  • 從零開(kāi)始初識(shí)機(jī)器學(xué)習(xí)

    從零開(kāi)始初識(shí)機(jī)器學(xué)習(xí)

    本篇文章中我們將對(duì)機(jī)器學(xué)習(xí)做全面的了解與介紹,其中第一章 初識(shí)機(jī)器學(xué)習(xí)分為上下兩個(gè)小章節(jié),對(duì)機(jī)器學(xué)習(xí)是什么、機(jī)器學(xué)習(xí)由來(lái)以及機(jī)器學(xué)習(xí)的理論等展開(kāi)說(shuō)明。目的是能讓即便完全沒(méi)接觸過(guò)機(jī)器學(xué)習(xí)的人也能在短時(shí)間對(duì)機(jī)器學(xué)習(xí)有一個(gè)全面了解。后續(xù)將推出機(jī)器學(xué)習(xí)

    2024年02月11日
    瀏覽(22)
  • 第十九篇【傳奇開(kāi)心果系列】Python的OpenCV庫(kù)技術(shù)點(diǎn)案例示例:文字識(shí)別與OCR

    第十九篇【傳奇開(kāi)心果系列】Python的OpenCV庫(kù)技術(shù)點(diǎn)案例示例:文字識(shí)別與OCR

    OpenCV文字識(shí)別與OCR:用于識(shí)別圖像中的文字內(nèi)容,并進(jìn)行光學(xué)字符識(shí)別。 OpenCV(Open Source Computer Vision Library)是一個(gè)開(kāi)源的計(jì)算機(jī)視覺(jué)庫(kù),提供了豐富的圖像處理計(jì)算機(jī)視覺(jué)算法。雖然CV 本身并不包含專(zhuān)門(mén)的 OCR(Optical Character Recognition,光學(xué)字符識(shí)別)功能,但可以配合其他

    2024年02月20日
    瀏覽(29)
  • 九五從零開(kāi)始的運(yùn)維之路(其十九)

    本篇將簡(jiǎn)述的內(nèi)容:Linux系統(tǒng)下的Tomcat基礎(chǔ) Tomcat 服務(wù)器是一個(gè)免費(fèi)的開(kāi)放源代碼的Web 應(yīng)用服務(wù)器,屬于輕量級(jí)應(yīng)用服務(wù)器,在中小型系統(tǒng)和并發(fā)訪(fǎng)問(wèn)用戶(hù)不是很多的場(chǎng)合下被普遍使用,是開(kāi)發(fā)和調(diào)試JSP 程序的首選。 Tomcat虛擬主機(jī)是通過(guò)linux或windows操作系統(tǒng)下進(jìn)行獨(dú)立運(yùn)行的

    2024年02月10日
    瀏覽(21)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包