java内部格式_详解java内部类的访问格式和规则
詳解java內(nèi)部類的訪問格式和規(guī)則
1.內(nèi)部類的定義
定義一個(gè)類來描述事物,但是這個(gè)事物其中可能還有事物,這時(shí)候在類中再定義類來描述。
2.內(nèi)部類訪問規(guī)則
①內(nèi)部類可以直接訪問外部類中的成員,包括私有。
之所以可以直接訪問外部類中的成員,是因?yàn)閮?nèi)部類中持有了一個(gè)外部類的引用
格式:外部類名.this
②外部類要訪問內(nèi)部類,必須建立內(nèi)部類對象。
3.訪問格式
①當(dāng)內(nèi)部類定義在外部類的成員位置上,而且非私有,可以在外部其他類中。可以直接建立內(nèi)部類對象。
外部類名.內(nèi)部類名 變量名 = 外部類對象.內(nèi)部類對象;
Outer.Inner in = new Outer().new Inner();
②當(dāng)內(nèi)部類在成員位置上,就可以被成員修飾符所修飾。
比如,private:將內(nèi)部類在外部類中進(jìn)行封裝。
static:內(nèi)部類具備了static的特性。
當(dāng)內(nèi)部類被static所修飾后,只能直接訪問外部類中的static成員。出現(xiàn)了訪問局限,在外部其他類中,如何直接訪問static內(nèi)部類的非靜態(tài)成員呢?
new Outer.Inner().function; //非靜態(tài)成員需要實(shí)例化才能調(diào)用方法。
在外部其他類中,如何直接訪問static內(nèi)部類的靜態(tài)成員呢?
Outer.Inner.function(); //靜態(tài)的先加載入內(nèi)存,直接類名調(diào)用就行了。
但是注意,當(dāng)內(nèi)部類中定義了靜態(tài)成員,該內(nèi)部類必須是static的。
當(dāng)外部類中的靜態(tài)方法訪問內(nèi)部類時(shí),內(nèi)部類也必須是static的。跟著靜態(tài)變量的訪問一樣。
class Outer // 所謂的外部類
{
private int x = 2;// 外部類的成員變量,私有修飾
class Inner // 內(nèi)部類
{
void function() {
System.out.print("inner:" + Outer.this.x);
}
}
}
class func {
public static void main(String[] args) {
Outer out = new Outer();
// 直接訪問內(nèi)部類成員
Outer.Inner in = new Outer().new Inner();
in.function();
}
}
時(shí)間: 2018-10-15
定義在類里面的類就叫做內(nèi)部類. 內(nèi)部類的特點(diǎn): 在內(nèi)部類中可以直接訪問外部類的成員,包括私有的成員 在外部類中不能直接訪問內(nèi)部類的成員,必須通過創(chuàng)建內(nèi)部類的對象來調(diào)用內(nèi)部類成員 如何創(chuàng)建內(nèi)部類對象: 內(nèi)部類名 對象名= new 內(nèi)部類名(); 對象名.成員名??? 但是私有化的東西還是不能訪問的 可以修飾內(nèi)部類的修飾符有哪些: private?? static 如果通過private 修飾 ,只能在外部類中提供公共的方法對內(nèi)部類進(jìn)行訪問 如果是static 修飾,如何創(chuàng)建外部類對象 外部類名.內(nèi)
本文實(shí)例講述了Java內(nèi)部類原理與用法.分享給大家供大家參考,具體如下: 一.非靜態(tài)內(nèi)部類 public class OutClass { private String name = "outclass"; public void show() { System.out.println(this.name); } public void innerShow() { InnerClass inner = new InnerClass(); inner.show(); inner.outS
Java內(nèi)部類 一. 含義 在Java編程語言里,程序是由類(class)構(gòu)建而成的.在一個(gè)類的內(nèi)部也可以聲明類,我們把這樣的類叫做內(nèi)部類. 二. 作用 ?實(shí)現(xiàn)了更好的封裝,我們知道,普通類(非內(nèi)部類)的訪問修飾符不能為private或protected,而內(nèi)部類可以.當(dāng)我們將內(nèi)部類聲明為private時(shí),只有外部類可以訪問內(nèi)部類,很好地隱藏了內(nèi)部類. ?內(nèi)部類可以繼承(extends)或?qū)崿F(xiàn)(implements)其他的類或接口,而不受外部類的影響. ?內(nèi)部類可以直接訪問外部類的字段和方法,即
本文實(shí)例講述了Java內(nèi)部類原理.概述與用法.分享給大家供大家參考,具體如下: 內(nèi)部類的概述 /* 內(nèi)部類概述: 把類定義在其他類的內(nèi)部,這個(gè)類就被稱為內(nèi)部類. 舉例:在類A中定義了一個(gè)類B,類B就是內(nèi)部類. 內(nèi)部的訪問特點(diǎn): A:內(nèi)部類可以直接訪問外部類的成員,包括私有. B:外部類要訪問內(nèi)部類的成員,必須創(chuàng)建對象. */ class Outer { private int num = 10; class Inner { public void show() { //內(nèi)部類可以直接訪問外部類的
事實(shí)上,除了匿名內(nèi)部類參數(shù),方法和作用域內(nèi)的內(nèi)部類內(nèi)部使用的外部變量也必須是final 的.原因大致總結(jié)一下: 簡單解釋就是: 方法中的局部變量的生命周期很短,方法結(jié)束后變量就要被銷毀,加上final是為了延長變量的生命周期. 進(jìn)一步解釋: 內(nèi)部類通常都含有回調(diào),引用那個(gè)匿名內(nèi)部類的函數(shù)執(zhí)行完了就沒了,所以內(nèi)部類中引用外面的局部變量需要是final的,這樣在回調(diào)的時(shí)候才能找到那個(gè)變量,而如果是外圍類的成員變量就不需要是final的,因?yàn)閮?nèi)部類本身都會(huì)含有一個(gè)外圍了的引用(外圍類.this),所以
前言 說起內(nèi)部類,大家并不陌生,并且會(huì)經(jīng)常在實(shí)例化容器的時(shí)候使用到它.但是內(nèi)部類的具體細(xì)節(jié)語法,原理以及實(shí)現(xiàn)是什么樣的可以不少人都還挺陌生,這里作一篇總結(jié),希望通過這篇總結(jié)提高對內(nèi)部類的認(rèn)識. 內(nèi)部類是什么? 由文章開頭可知,內(nèi)部類的定義為:定義在另一個(gè)類或方法中的類.而根據(jù)使用場景的不同,內(nèi)部類還可以分為四種:成員內(nèi)部類,局部內(nèi)部類,匿名內(nèi)部類和靜態(tài)內(nèi)部類.每一種的特性和注意事項(xiàng)都不同,下面我們一一說明. 成員內(nèi)部類 顧名思義,成員內(nèi)部類是定義在類內(nèi)部,作為類的成員的類.如下: public
本文實(shí)例講述了java內(nèi)部類原理與用法.分享給大家供大家參考,具體如下: 概念 內(nèi)部類:可以包含在另外一個(gè)類中的類 外部類:包含內(nèi)部類的類 每個(gè)內(nèi)部類都會(huì)被編譯為一個(gè)獨(dú)立的類,生成一個(gè)獨(dú)立的字節(jié)碼文件. 內(nèi)部類可以方便地訪問外部類的私有變量,內(nèi)部類也可以聲明為private從而實(shí)現(xiàn)對外完全隱藏. 分類 java中的四種內(nèi)部類(根據(jù)定義的位置和方式劃分) -靜態(tài)內(nèi)部類 -成員內(nèi)部類 -方法內(nèi)部類 -匿名內(nèi)部類 分類介紹 -靜態(tài)內(nèi)部類 特征:在類的內(nèi)部中存在另一個(gè)類,且該類被static修飾 使用范
本文實(shí)例講述了Java匿名內(nèi)部類原理與用法.分享給大家供大家參考,具體如下: 一 點(diǎn)睛 匿名內(nèi)部類適合創(chuàng)建那種只需要一次使用的類,定義匿名內(nèi)部類的語法格式如下: new 父類構(gòu)造器(實(shí)參列表) | 實(shí)現(xiàn)接口() { //匿名內(nèi)部類的類體部分 } 從上面的定義可以看出,匿名內(nèi)部類必須繼承一個(gè)父類,或?qū)崿F(xiàn)一個(gè)接口,但最多只能繼承一個(gè)父類,或?qū)崿F(xiàn)一個(gè)接口. 兩條規(guī)則. 匿名內(nèi)部類不能是抽象類. 匿名內(nèi)部類不能定義構(gòu)造器.由于匿名內(nèi)部類沒有類名,所以無法定義構(gòu)造器,但匿名內(nèi)部類可以初始化塊,可以通過初始
這篇文章主要介紹了Java中 switch關(guān)鍵原理及用法詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下 Switch語法 switch作為Java內(nèi)置關(guān)鍵字,卻在項(xiàng)目中真正使用的比較少.關(guān)于switch,還是有那么一些奧秘的. 要什么switch,我有if-else 確實(shí),項(xiàng)目中使用switch比較少的一個(gè)主要原因就在于它的作用能被if-else代替,況且switch對類型的限制,也阻礙了switch的進(jìn)一步使用. 先看看switch的語法
java 中 ChannelHandler的用法詳解 前言: ChannelHandler處理一個(gè)I/O event或者攔截一個(gè)I/O操作,在它的ChannelPipeline中將其遞交給相鄰的下一個(gè)handler. 通過繼承ChannelHandlerAdapter來代替 因?yàn)檫@個(gè)接口有許多的方法需要實(shí)現(xiàn),你或許希望通過繼承ChannelHandlerAdapter來代替. context對象 一個(gè)ChannelHandler和一個(gè)ChannelHandlerContext對象一起被提供.一個(gè)
class1.isAssignableFrom(class2) 判定此 Class 對象所表示的類或接口與指定的 Class 參數(shù)所表示的類或接口是否相同,或是否是其超類或超接口.如果是則返回 true:否則返回 false.如果該 Class 表示一個(gè)基本類型,且指定的 Class 參數(shù)正是該 Class 對象,則該方法返回 true:否則返回 false. 1. class2是不是class1的子類或者子接口 2. Object是所有類的父類 一個(gè)例子搞定: package com.auuz
好,應(yīng)大家的要求先給大家說下在JAVA程序中instanceof是什么意思 instanceof是Java的一個(gè)二元操作符,和==,>,
這篇文章主要介紹了Java Linkedlist原理及實(shí)例詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下 定義:linkedlist屬于鏈表結(jié)構(gòu),方便添加和刪除元素,但查詢不方便,適用于對收尾的操作. 具有具體的對象,使用對象調(diào)用具體的方法 add // 添加元素 //在中間添加元素 arr.add("H"); addFirst:在集合最前面添加元素 // 在鏈表頭部添加元素 arr.addFirst("F")
String對象是不可改變的.每次使用System.String類中的方法之一時(shí),都要在內(nèi)存中創(chuàng)建一個(gè)新的字符串對象,這就需要為該新對象分配新的空間.在需要對字符串執(zhí)行重復(fù)修改的情況下,與創(chuàng)建新的String對象相關(guān)的系統(tǒng)開銷可能會(huì)非常昂貴.如果要修改字符串而不創(chuàng)建新的對象,則可以使用System.Text.StringBuilder類.例如,當(dāng)在一個(gè)循環(huán)中將許多字符串連接在一起時(shí),使用StringBuilder類可以提升性能. 通過用一個(gè)重載的構(gòu)造函數(shù)方法初始化變量,可以創(chuàng)建StringBui
Java extends用法詳解 概要: 理解繼承是理解面向?qū)ο蟪绦蛟O(shè)計(jì)的關(guān)鍵.在Java中,通過關(guān)鍵字extends繼承一個(gè)已有的類,被繼承的類稱為父類(超類,基類),新的類稱為子類(派生類).在Java中不允許多繼承. (1)繼承 class Animal{ void eat(){ System.out.println("Animal eat"); } void sleep(){ System.out.println("Animal sleep"); } vo
總結(jié)
以上是生活随笔為你收集整理的java内部格式_详解java内部类的访问格式和规则的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 魔乐手机管家(魔乐手机管家官网)
- 下一篇: 东芝手提重装电脑系统(东芝电脑怎么重装系