【java】19:內部類(3)

成員內部類:

1.可以直接訪問外部類的所有成員,包含私有的

class Outer01{//外部類
private int n1 = 10;
public String name = "張三";
class Innter01{
public void say0(){
System.out.println("Outer01 的n1 =" + n1 +" outer01 的 name ="+ name );
}}}

2.可以添加任意訪問修飾符(public、protected、默認、private),因為它的地位就是一個成員。

3.作用域 和外部類的其他成員一樣,為整個類體比如前面案例,在外部類的成員方法中創建成員內部類對象,再調用方法.

4.成員內部類---訪問---->外部類成員(比如屬性)[訪問方式:直接訪問](說明)

5.外部類---訪問--->成員內部類(說明)訪問方式:創建對象,再訪問

6.外部其他類---訪問---->成員內部類

7.如果外部類和內部類的成員重名時,內部類訪問的話,默認遵循就近原則,如果想訪問外部類的成員,則可以使用(外部類名.this.成員)去訪問

package com.hspedu.innerclass;
public class MemberInnerClass01 {
public static void main(String[] args) {
Outer08 outer08 = new Outer08();
outer08.t1();
//外部其他類,使用成員內部類的三種方式
//解讀
// 第一種方式
// outer08.new Inner08(); 相當于把 new Inner08()當做是 outer08 成員
// 這就是一個語法,不要特別的糾結. Outer08.Inner08 inner08 = outer08.new Inner08();
inner08.say();
// 第二方式 在外部類中,編寫一個方法,可以返回 Inner08 對象
Outer08.Inner08 inner08Instance = outer08.getInner08Instance();
inner08Instance.say();
}
}
class Outer08 { //外部類
private int n1 = 10;
public String name = "張三";
private void hi() {
System.out.println("hi()方法...");
}
//1.注意: 成員內部類,是定義在外部內的成員位置上
//2.可以添加任意訪問修飾符(public、protected 、默認、private),因為它的地位就是一個成員
public class Inner08 {//成員內部類
private double sal = 99.8;
private int n1 = 66;
public void say() {
//可以直接訪問外部類的所有成員,包含私有的
//如果成員內部類的成員和外部類的成員重名,會遵守就近原則. //,可以通過 外部類名.this.屬性 來訪問外部類的成員
System.out.println("n1 = " + n1 + " name = " + name + " 外部類的 n1=" + Outer08.this.n1);
hi();
}
}
//方法,返回一個 Inner08 實例
public Inner08 getInner08Instance(){
return new Inner08();
}
//寫方法
public void t1() {
//使用成員內部類
//創建成員內部類的對象,然后使用相關的方法
Inner08 inner08 = new Inner08();
inner08.say();
System.out.println(inner08.sal);
}
}

靜態內部類:

說明:靜態內部類是定義在外部類的成員位置,并且有static修飾

1.可以直接訪問外部類的所有靜態成員,包含私有的,但不能直接訪問非靜態成員

2.可以添加任意訪問修飾符(public、protected、默認、private),因為它的地位就是一個成員。

3.作用域:同其他的成員,為整個類體

4.靜態內部類---訪問---->外部類(比如:靜態屬性)[訪問方式:直接訪問所有靜態成員]

5.外部類---訪問-->靜態內部類訪問方式:創建對象,再訪問

6.外部其他類---訪問--->靜態內部類7.如果外部類和靜態內部類的成員重名時,靜態內部類訪問的時,默認遵循就近原則,如果想訪問外部類的成員,則可以使用(外部類名.成員)去訪問

package com.hspedu.innerclass;
public class StaticInnerClass01 {
public static void main(String[] args) {
Outer10 outer10 = new Outer10();
outer10.m1();
//外部其他類 使用靜態內部類
//方式 1
//因為靜態內部類,是可以通過類名直接訪問(前提是滿足訪問權限)
Outer10.Inner10 inner10 = new Outer10.Inner10();
inner10.say();
//方式 2
//編寫一個方法,可以返回靜態內部類的對象實例. Outer10.Inner10 inner101 = outer10.getInner10();
System.out.println("============");
inner101.say();
Outer10.Inner10 inner10_ = Outer10.getInner10_();
System.out.println("************");
inner10_.say();
}
}
class Outer10 { //外部類
private int n1 = 10;
private static String name = "張三";
private static void cry() {}
//Inner10 就是靜態內部類
//1. 放在外部類的成員位置
//2. 使用 static 修飾
//3. 可以直接訪問外部類的所有靜態成員,包含私有的,但不能直接訪問非靜態成員
//4. 可以添加任意訪問修飾符(public、protected 、默認、private),因為它的地位就是一個成員
//5. 作用域 :同其他的成員,為整個類體
static class Inner10 {
private static String name = "韓順平教育";
public void say() {
//如果外部類和靜態內部類的成員重名時,靜態內部類訪問的時,
//默認遵循就近原則,如果想訪問外部類的成員,則可以使用 (外部類名.成員)
System.out.println(name + " 外部類 name= " + Outer10.name);
cry();
}
}
public void m1() { //外部類---訪問------>靜態內部類 訪問方式:創建對象,再訪問
Inner10 inner10 = new Inner10();
inner10.say();
}
public Inner10 getInner10() {
return new Inner10();
}
public static Inner10 getInner10_() {
return new Inner10();
}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/715421.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/715421.shtml
英文地址,請注明出處:http://en.pswp.cn/news/715421.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

JWT基于Cookie的會話保持,并解決CSRF問題的方案

使用JWT進行瀏覽器接口請求,在使用Cookie進行會話保持傳遞Token時,可能會存在 CSRF 漏洞問題,同時也要避免在產生XSS漏洞時泄漏Token問題,如下圖在盡可能避免CSRF和保護Token方面設計了方案。 要點解釋如下: 將JWT存入…

Snagit 2024:讓你的屏幕活動瞬間變得生動有力 mac/win版

Snagit 2024 屏幕錄制與截圖軟件是一款功能強大的工具,專為現代用戶設計,以滿足他們在工作、學習和娛樂中對屏幕內容捕捉和分享的需求。這款軟件結合了屏幕錄制和截圖功能,為用戶提供了一種高效、便捷的方式來捕捉屏幕上的精彩瞬間。 Snagit…

xxl-job--01--簡介

提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 文章目錄 1.xxl-job1. 1 發展歷史1.2 XXL-JOB的系統架構1.3 xxl-job與其他框架對比 2. XXL-JOB的使用2.1 準備工作- 配置調度中心XXL-JOB的數據表 2.2 配置執行器1 引入依賴包…

vue cesium加載點與定位到指定位置

vue cesium定位到指定位置 window.viewer.camera.flyTo({destination: Cesium.Cartesian3.fromDegrees(point.longDeg, point.latDeg, 6500000), orientation: {heading: 6.2079384332084935, roll: 0.00031509431759868534, pitch: -1.535}, duration: 3})vue cesium加載點 …

【蛀牙】如何選擇牙刷,牙膏和牙杯(含其他日常牙具:牙線,漱口水,沖牙器)

程序員生活指南之 【蛀牙】如何選擇牙刷,牙膏和牙杯(含其他日常牙具:牙線,漱口水,沖牙器) 文章目錄 一、如何選擇牙刷,牙膏和牙杯1、如何選擇牙刷2、如何選擇牙膏3、如何選擇牙杯 二、日常牙具&…

為什么HashMap的鍵值可以為null,而ConcurrentHashMap不行?

寫在開頭 今天在寫《HashMap很美好,但線程不安全怎么辦?ConcurrentHashMap告訴你答案!》這篇文章的時候,漏了一個知識點,知道晚上吃飯的時候才凸顯想到,關于ConcurrentHashMap在存儲Key與Value的時候&…

【Java】面向對象之多態超級詳解!!

文章目錄 前言一、多態1.1 多態的概念1.2 多態的實現條件1.3 重寫1.3.1方法重寫的規則1.3.2重寫和重載的區別 1.4 向上轉型和向下轉型1.4.1向上轉型1.4.2向下轉型 1.5 多態的優缺點1.5.1 使用多態的好處1.5.2 使用多態的缺陷 結語 前言 為了深入了解JAVA的面向對象的特性&…

基于yolov5的電瓶車和自行車檢測系統,可進行圖像目標檢測,也可進行視屏和攝像檢測(pytorch框架)【python源碼+UI界面+功能源碼詳解】

功能演示: 基于yolov5的電瓶車和自行車檢測系統_嗶哩嗶哩_bilibili (一)簡介 基于yolov5的電瓶車和自行車檢測系統是在pytorch框架下實現的,這是一個完整的項目,包括代碼,數據集,訓練好的模型…

協程庫項目—日志模塊

日志模塊程序結構圖 sylarLog ├── LogLevel(日志級別封裝類) │ ├── 提供“從日志級別枚舉值轉換到字符串”、“從字符串轉換相應的日志級別枚舉值”等方法 ├── LogEvent(日志事件類) │ ├── 封裝日志事件的屬性…

Unity(第二十一部)動畫的基礎了解(感覺不了解其實也行)

1、動畫組件老的是Animations 動畫視頻Play Automatically 是否自動播放Animate Physics 驅動方式,勾選后是物理驅動Culling Type 剔除方式 默認總是動畫化就會一直執行下去,第二個是基于渲染播放(離開鏡頭后不執行), …

高性能服務系列【二】CPU和內存

現代計算機的系統架構十分復雜。在服務器中,雙路處理器已經十分常見。最近Arm處理器實現雙路共384核心,要知道目前Linux內核最高只支持256核,這就有點尷尬。 多路處理器將越來越普遍,對性能的影響和傳統架構有不小的差別&#xf…

MySQL中json類型的字段

有些很復雜的信息,我們一般會用擴展字段傳一個json串,字段一般用text類型存在數據庫。mysql5.7以后支持json類型的字段,還可以進行sql查詢與修改json內的某個字段的能力。 1.json字段定義 ip_info json DEFAULT NULL COMMENT ip信息, 2.按…

GO基本類型一些記錄

基本類型一些記錄 1.直接粘貼文本進println(" ")2.中文字符串長度別用len( )3.byte本質是uint8 1.直接粘貼文本進println(" ") GoLand會自動補充轉義符 2.中文字符串長度別用len( ) 用相應編碼庫的方法,一般utf8即可 utf8.RuneCountInStrin…

PySide6實現word轉化pdf

目錄 一:實現思路 二:實現代碼 三:完整代碼和界面 一:實現思路 利用PySide6創建兩個按鈕和一個顯示區域,一個選擇文件按鈕,一個轉化按鈕和信息展示,操作文件按鈕選擇一個待轉化的word文檔。并且展示文件路徑到信息展示區,操作轉化按鈕,讀取選擇的文件轉化為pdf。并…

ThreadLocal介紹

文章目錄 ThreadLocal源碼分析:set方法get方法remove方法 ThreadLocal內存泄漏問題 ThreadLocal ThreadLocal提供了線程局部變量,每個線程都可以通過set和get方法來對這個變量進行操作,但不會和其他線程的局部變量沖突,實現了線程…

Doris實戰——拈花云科的數據中臺實踐

目錄 前言 一、業務背景 二、數據中臺1.0—Lambda 三、新架構的設計目標 四、數據中臺2.0—Apache Doris 4.1 新架構數據流轉 4.2 新架構收益 五、新架構的落地實踐 5.1 模型選擇 5.1.1 Unique模型 5.1.2 Aggregate模型 5.2 資源管理 5.3 批量建表 5.4 計算實現…

Stable Diffusion 模型分享:Realistic Stock Photo(真實的庫存照片)

本文收錄于《AI繪畫從入門到精通》專欄,專欄總目錄:點這里。 文章目錄 模型介紹生成案例案例一案例二案例三案例四案例五案例六案例七案例八 下載地址 模型介紹 條目內容類型大模型基礎模型SDXL 1.0來源CIVITAI作者PromptSharingSamaritan文件名稱reali…

原生GO開發的博客系統

Go博客實戰教程,是一個練手級項目教程,使用原生Go開發,未使用任何框架。 如何使用原生Go開發一個web項目 循序漸進,掌握編程思維和思路 初步具有工程思維,能適應一般的開發工作 1. 搭建項目 package mainimport (&q…

Vue3_2024_1天【Vue3創建和響應式,對比Vue2】

前言: Vue3對比Vue2版本,它在性能、功能、易用性和可維護性方面都有顯著的提升和改進。 性能優化:模板編譯器的優化、對Proxy的支持以及使用了更加高效的Virtual DOM算法等。這使得Vue3的打包大小減少了41%,初次渲染提速55%&#…

【MATLAB源碼-第153期】基于matlab的OFDM系統插入導頻和訓練符號兩種信道估計方式誤碼率對比仿真。

操作環境: MATLAB 2022a 1、算法描述 OFDM(Orthogonal Frequency Division Multiplexing,正交頻分復用)是一種高效的無線信號傳輸技術,廣泛應用于現代通信系統,如Wi-Fi、LTE和5G。OFDM通過將寬帶信道劃分…