內部類.Java學習

来源:https://www.cnblogs.com/ITGrass/archive/2022/08/07/16559041.html
-Advertisement-
Play Games

今天複習一下Java裡面一個比較重要的概念 內部類 局部內部類 內部類是定義在一個類的內部。通常是在方法中。 本質還是一個類,可以訪問外部類的所有成員,包含私有的。 不能使用訪問修飾符。但是可以使用final修飾符。 作用域盡在定義它的方法或者代碼塊中。 外部其他類不能訪問局部內部類(因為局部內部類 ...


今天複習一下Java裡面一個比較重要的概念  內部類

 局部內部類

  1. 內部類是定義在一個類的內部。通常是在方法中。
  2. 本質還是一個類,可以訪問外部類的所有成員,包含私有的。
  3. 不能使用訪問修飾符。但是可以使用final修飾符。
  4. 作用域盡在定義它的方法或者代碼塊中。
  5. 外部其他類不能訪問局部內部類(因為局部內部類的地位就是衣個局部變數)。
  6. 如果外部類和局部類的成員變數重名。遵守就近原則。如果要訪問外部類變數。 可以通過 類型.this.成員 去訪問。

匿名內部類

  1. 該類沒有名字。
  2. 是一個對象。
  3. 定義外部類的局部位置,比如方法中,並且沒有類名。(系統底層會分配一個類型)。
  4.  匿名內部類使用一次就沒了(生成的對象是可以多次使用)。
  5. 匿名內部類是為了簡化開發。

 

 1 package anonymous;
 2 
 3 public class InnerClass {
 4     public static void main(String[] args) {
 5         new Test().run();
 6     }
 7 }
 8 
 9 
10 class Test {
11 
12     public void run() {
13         Animal dog = new Animal() {
14             @Override
15             public void Say() {
16                 System.out.println("小狗汪汪");
17                 System.out.println(this.getClass());
18             }
19         };
20         dog.Say();
21     }
22 }
23 
24 
25 interface Animal {
26     void Say();
27 }

 


----------
輸出結果。

小狗汪汪
class anonymous.Test$1

成員內部類

  1.  定義為的位置是成員位置。
  2. 外部其他類可以調用成員內部類。

 

 1 package anonymous;
 2 
 3 public class MemberInnerClass {
 4     public static void main(String[] args) {
 5         Test01 test01 = new Test01();
 6         Test01.InnerClass innerClass = test01.new InnerClass();
 7         innerClass.Run();
 8     }
 9 }
10 
11 class Test01 {
12 
13     class InnerClass {
14         public void Run() {
15             System.out.println("這是成員內部類");
16         }
17     }
18 }

 

靜態內部類

  1. 靜態內部類還是定義在成員位置,但是他有static修飾。
  2. 可以直接訪問外部類的所有靜態成員,包括私有的。但是不能直接訪問非靜態的成員。

 

千里之行始於足下。
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Java常用類 1.字元串相關類練習 1.1StringBuilder練習 package li.normalclass.stringbuilder; public class TestBuffer { public static void main(String[] args) { StringB ...
  • 目錄 一.簡介 二.效果演示 三.源碼下載 四.猜你喜歡 零基礎 OpenGL (ES) 學習路線推薦 : OpenGL (ES) 學習目錄 >> OpenGL ES 基礎 零基礎 OpenGL (ES) 學習路線推薦 : OpenGL (ES) 學習目錄 >> OpenGL ES 轉場 零基礎 O ...
  • print函數中總是涉及到各式各樣的輸出,為了方便學習和查詢,今天在這裡特意做一個總結!註意:#後為輸出結果 1、“,”分隔 1 print("hello","world") #hello world(預設空格連接) 2、“+”連接 1 print("hello"+"world") #hellowo ...
  • 過濾器鏈分析 提起Spring Security的實現原理,很多讀者都會想到過濾器鏈。因為Spring Security中的所有功能都是通過過濾器來實現的,這些過濾器組成一個完整的過濾器鏈。那麼,這些過濾器 鏈是如何初始化的?我們前面反覆提到的AuthenticationManager又是如何初始化 ...
  • #SpringCloud環境搭建 --- Rest使用 個人主頁:https://www.cnblogs.com/xbudian/ 今天來到SpringCloud的學習,我們從spring boot微服務階段,學習到了用springboot去創建很多的微服務,但是這麼多微服務我們如果去管理,以及相互... ...
  • 在應對日漸複雜的業務環境,單個資料庫所能承載的壓力已經遠遠不夠。很多業務中誕生了主從資料庫的架構模型,將數據讀寫進行分離,主庫寫,從庫讀,以提升服務的吞吐量。 在進行代碼設計的時候,我們很自然會想到一個問題,一個業務操作,往往會包括讀 和 寫,例如在實現一個閱讀點擊量的簡單需求的時候,是不是需要先查 ...
  • SpringBootTest無法啟動:java.lang.IllegalStateException Unable to find a @SpringBootConfiguration, you need to use 1、出現的原因 個人代碼如下所示 無法啟動的原因是因為,當前測試類@Spring ...
  • 註釋 單行註釋 語法: # 註釋的內容 說明多行代碼的功能時,一般將註釋寫在代碼的上一行 # 列印hello print(hello) print(hello) print(hello) 說明單行代碼時,一般寫在右邊 print(1+2) # 加法運算 變數 先定義後使用 變數名規則: 變數名只能是 ...
一周排行
    -Advertisement-
    Play Games
  • C#TMS系統代碼-基礎頁面BaseCity學習 本人純新手,剛進公司跟領導報道,我說我是java全棧,他問我會不會C#,我說大學學過,他說這個TMS系統就給你來管了。外包已經把代碼給我了,這幾天先把增刪改查的代碼背一下,說不定後面就要趕鴨子上架了 Service頁面 //using => impo ...
  • 委托與事件 委托 委托的定義 委托是C#中的一種類型,用於存儲對方法的引用。它允許將方法作為參數傳遞給其他方法,實現回調、事件處理和動態調用等功能。通俗來講,就是委托包含方法的記憶體地址,方法匹配與委托相同的簽名,因此通過使用正確的參數類型來調用方法。 委托的特性 引用方法:委托允許存儲對方法的引用, ...
  • 前言 這幾天閑來沒事看看ABP vNext的文檔和源碼,關於關於依賴註入(屬性註入)這塊兒產生了興趣。 我們都知道。Volo.ABP 依賴註入容器使用了第三方組件Autofac實現的。有三種註入方式,構造函數註入和方法註入和屬性註入。 ABP的屬性註入原則參考如下: 這時候我就開始疑惑了,因為我知道 ...
  • C#TMS系統代碼-業務頁面ShippingNotice學習 學一個業務頁面,ok,領導開完會就被裁掉了,很突然啊,他收拾東西的時候我還以為他要旅游提前請假了,還在尋思為什麼回家連自己買的幾箱飲料都要叫跑腿帶走,怕被偷嗎?還好我在他開會之前拿了兩瓶芬達 感覺感覺前面的BaseCity差不太多,這邊的 ...
  • 概述:在C#中,通過`Expression`類、`AndAlso`和`OrElse`方法可組合兩個`Expression<Func<T, bool>>`,實現多條件動態查詢。通過創建表達式樹,可輕鬆構建複雜的查詢條件。 在C#中,可以使用AndAlso和OrElse方法組合兩個Expression< ...
  • 閑來無聊在我的Biwen.QuickApi中實現一下極簡的事件匯流排,其實代碼還是蠻簡單的,對於初學者可能有些幫助 就貼出來,有什麼不足的地方也歡迎板磚交流~ 首先定義一個事件約定的空介面 public interface IEvent{} 然後定義事件訂閱者介面 public interface I ...
  • 1. 案例 成某三甲醫預約系統, 該項目在2024年初進行上線測試,在正常運行了兩天後,業務系統報錯:The connection pool has been exhausted, either raise MaxPoolSize (currently 800) or Timeout (curren ...
  • 背景 我們有些工具在 Web 版中已經有了很好的實踐,而在 WPF 中重新開發也是一種費時費力的操作,那麼直接集成則是最省事省力的方法了。 思路解釋 為什麼要使用 WPF?莫問為什麼,老 C# 開發的堅持,另外因為 Windows 上已經裝了 Webview2/edge 整體打包比 electron ...
  • EDP是一套集組織架構,許可權框架【功能許可權,操作許可權,數據訪問許可權,WebApi許可權】,自動化日誌,動態Interface,WebApi管理等基礎功能於一體的,基於.net的企業應用開發框架。通過友好的編碼方式實現數據行、列許可權的管控。 ...
  • .Net8.0 Blazor Hybird 桌面端 (WPF/Winform) 實測可以完整運行在 win7sp1/win10/win11. 如果用其他工具打包,還可以運行在mac/linux下, 傳送門BlazorHybrid 發佈為無依賴包方式 安裝 WebView2Runtime 1.57 M ...