當前位置:首頁 » 編程語言 » java內部類訪問外部

java內部類訪問外部

發布時間: 2022-08-27 19:29:13

『壹』 java裡面內部類可以訪問外部類以外的類的屬性嗎

可以,書寫也很簡單,帶上公開類名字即可!

『貳』 java中,一個內部類如何拿到外部類的變數值

內部類
1.內部類的訪問規則 (1)內部類可以直接訪問外部類中的成員,包括私有 之所以可以直接訪問外部類的成員,是因為內部類中持有一個外部類的引用,格式:外部類名.this (2) 外部類要訪問內部類,必須建立內部類對象。2.訪問格式當內部類定義在外部類的成員位置上,而且非私有,可以再外部其他類中,可以直接建立內部類對象格式:外部類.內部類 變數名=外部類對象.內部類對象; 當內部了在成員位置上,就可以被成員修飾符所修飾比如private,將內部類在外部類中進行封裝static:內部類就具備static的特性當內部類被static修飾後,只能直接訪問外部類中的static成員。出現了訪問局限
在外部其他類中,如何直接訪問static內部類的非靜態成員呢new outer.Inner().function();
注意:當內部類中定義了靜態成員,該內部類必須是static的: 當外部類中的靜態方法訪問內部類時,內部類也必須是靜態的
內部類定義在局部時,不可以被成員修飾符修飾,可以直接訪問外部類中的成員,因為還持有外部類中的引用。但是不可以訪問它所在的局部中的變數,只能訪問被final修飾的局部變數。

『叄』 java如何在內部類訪問外部類成員變數

一對於外部類來說內部類相當於它的一個屬性內部類中的private也相當於它本身的private屬性所以根據類內可見原則內部類private是可以被外部類訪問的二你在主方法中直接new一個自身類相當於是在聲明一個新的類用這個新類去調用它的私有你說是啥後果對於jmv來說這就是典型的調用許可權失敗

『肆』 深入理解Java中為什麼內部類可以訪問外部類的成員

一般來說,外部類調用內部類的方法分為以下幾種情況:
1.使用static可以聲明一個內部類, 可以直接在外部調用

// 定義外部類
class Outer
{
// 定義外部類的私有屬性
private static String info = "hello world";
// 使用static定義內部類
static class Inner
{
// 定義內部類的方法
public void print()
{
// 直接訪問外部類的私有屬性
System.out.println(info);
}
}
// 定義外部類的方法
public void fun()
{
// 通過內部類的實例化對象調用方法
new Inner().print();
}
}

public class InnerClassDemo03
{
public static void main(String args[])
{
// 通過Outer.Inner創建內部類的實例,並調用它的print方法
new Outer.Inner().print() ;
}
}
2.不使用statc聲明一個內部類 ,使外部調用

//定義外部類
class Outer
{
//定義外部類的私有屬性
private String info = "hello world";
//定義內部類
class Inner
{
//定義內部類的方法
public void print()
{
//直接訪問外部類的私有屬性
System.out.println(info);
}
};
//定義外部類的方法
public void fun()
{
//通過內部類的實例化對象調用方法
new Inner().print();
}
};
public class InnerClassDemo04
{
public static void main(String args[])
{
//外部類實例化對象
Outer out = new Outer();
//實例化內部類對象
Outer.Inner in = out.new Inner();
//調用內部類的方法
in.print();
}
}
3.在方法中定義內部類 ,使外部調用

//定義外部類
class Outer
{
//定義外部類的私有屬性
private String info = "hello world";
//定義外部類的方法
public void fun(final int temp)
{
//在方法中定義的內部類
class Inner
{
//定義內部類的方法
public void print()
{
//直接訪問外部類的私有屬性
System.out.println("類中的屬性:" + info);
System.out.println("方法中的參數:" + temp);
}
}
//通過內部類的實例化對象調用方法
new Inner().print();
}
}

public class InnerClassDemo05
{
public static void main(String args[]){
//調用外部類的方法
new Outer().fun(30);
}
}

『伍』 Java內部類怎麼直接調用外部類啊

publicclassOuter{
intx;
Strings="hello";
publicvoidtest(){
System.out.print("test");
}
publicclassInner{
ints=20;
publicvoidtestInner(){
//可以直接使用外部類的成員變數和成員方法
x=0;
test();
//如果外部類的成員變數和內部類變數重名,可以這樣調用外部類的變數
Outer.this.s="test";
//當然你可以new外部類對象這也是沒問題的
Outero=newOuter();
o.x=30;
o.test();
}
}
}

『陸』 Java中為什麼內部類可以訪問外部類的成

因為java最高的訪問許可權是private,也就是類訪問許可權,因為內部類在外部類之內,所以可以訪問

『柒』 java 內部類 能被外部使用嗎

1、內部類是指在一個外部類的內部再定義一個類。類名不需要和文件夾相同。
2、內部類可以是靜態static的,也可用public,default,protected和private修飾。(而外部頂級類即類名和文件名相同的只能使用public和default)。
3、內部類是一個編譯時的概念,一旦編譯成功,就會成為完全不同的兩類。對於一個名為outer的外部類和其內部定義的名為inner的內部類。編譯完成後出現outer.class和outer$inner.class兩類。 所以內部類的成員變數/方法名可以和外部類的相同。
4、內部類具有:成員內部類、局部內部類、嵌套內部類、匿名內部類。
以下以成員內部類示例:
成員內部類,就是作為外部類的成員,可以直接使用外部類的所有成員和方法,即使是private的。同時外部類要訪問內部類的所有成員變數/方法,則需要通過內部類的對象來獲取。
要注意的是,成員內部類不能含有static的變數和方法。 因為成員內部類需要先創建了外部類,才能創建它自己的 ,了解這一點,就可以明白更多事情,在此省略更多的細節了。
在成員內部類要引用外部類對象時,使用outer.this來表示外部類對象;
而需要創建內部類對象,可以使用outer.inner obj = outerobj.new inner();
示例代碼:
public class Outer {
public static void main(String[] args) {
Outer outer = new Outer();
Outer.Inner inner = outer. new Inner();
inner.print( "Outer.new" );
inner = outer.getInner();
inner.print( "Outer.get" );
}
public Inner getInner() {
return new Inner();
}
public class Inner {
public void print(String str) {
System.out.println(str);
}
}
}

『捌』 java內部類怎麼訪問外部類的方法

在內部類使用this表示的是對內部類自身的引用,如果想要獲取外部類的引用,應當使用Outer.this,所以訪問外部類的方法:
Outer.this.xxxx()

『玖』 java 內部類怎麼調用外部類的函數

你好!
方法1:定義內部類的一個對象,用該對象調用外部類的成員函數
方法2:直接用語句:this.外部類的成員函數名。
僅代表個人觀點,不喜勿噴,謝謝。

『拾』 Java中內部類可以訪問外部類的成員,請問這樣算不算是破壞了封裝性

內部類本質上就是外部類的一個成員,享有成員一樣的共性。
就好比抽象類,也是類,具有類的所有共性。然後因為abstract所以具有了自己的特性。
所以內部類具有成員的一切共性,也具有類的一切共性,同時也具有自己的一些特性。

類的成員之間可以互相訪問,所以這個內部類也可以訪問外部類的成員。封裝的目的就是為了代碼的復用、增強安全性、實現模塊化等,其實內部類嵌入到裡面也是為了這個目的。不能說是破壞了這個封裝原則吧。

內部類也有說內嵌類的,這種內嵌類在SDK中還是不少的。JDK中記得不太清楚了,ADK(安卓的SDK)中比如有LinearLayout.LayoutParames、ViewGroup.LayoutParames、SharedPreferences.Editor等都是內部類的體現。

熱點內容
抗震柱加密區 發布:2025-01-17 03:03:06 瀏覽:134
幼兒園源碼php 發布:2025-01-17 02:41:45 瀏覽:401
win引導Linux 發布:2025-01-17 02:36:49 瀏覽:263
ftp是傳輸類協議嗎 發布:2025-01-17 02:36:47 瀏覽:311
查看電視配置下載什麼軟體 發布:2025-01-17 02:36:41 瀏覽:159
寶馬x330i比28i多哪些配置 發布:2025-01-17 02:35:59 瀏覽:573
伺服器運維安全雲幫手 發布:2025-01-17 02:35:48 瀏覽:72
c應用編程 發布:2025-01-17 02:35:16 瀏覽:941
ios清除app緩存數據免費 發布:2025-01-17 02:34:33 瀏覽:375
微信企業號上傳文件 發布:2025-01-17 02:10:28 瀏覽:64