內部類訪問外部類方法
❶ 內部類可以訪問外部類的屬性和方法嗎
外部類名.this.外部類方法
內部類分為:有四種內部類
分別是:靜態內部類,成員內部類,局部內部累,匿名內部類。
匿名內部類因為沒有類名因此:
1.不能有構造方法
2.不能有任何靜態成員方法,或者類
3.不能用修飾符修飾,如public.private,protected
4.必須跟在new一個對象之後
❷ 內部類怎麼調用外部同名方法
1.使用static可以聲明一個內部類, 可以直接在外部調用
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Outer{ // 定義外部類
private static String info = "hello world" ; // 定義外部類的私有屬性
static class Inner{ // 使用static定義內部類為外部類
public void print(){ // 定義內部類的方法
System.out.println(info) ; // 直接訪問外部類的私有屬性
}
};
public void fun(){ // 定義外部類的方法
new Inner().print() ; // 通過內部類的實例化對象調用方法
}
};
public class InnerClassDemo03{
public static void main(String args[]){
new Outer.Inner().print() ; // 調用外部類的fun()方法
}
};
2.不使用statc聲明一個內部類 ,使外部調用
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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.在方法中定義內部類 ,使外部調用
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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) ; // 調用外部類的方法
}
};
❸ 內部類裡面的方法怎麼訪問外部類成員,求解!!!
在內部類使用this表示的是對內部類自身的引用,如果想要獲取外部類的引用,應當使用Outer.this,所以訪問外部類的方法:
Outer.this.xxxx()
❹ 深入理解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內部類可以訪問外部類的靜態方法嗎
內部類
就相當於一個外部類的成員變數,所以可以直接訪問
外部變數
,外部類不能直接訪問內部類變數,必須通過創建內部類實例的方法訪問,
new
InnerClass
(32).m就是創建內部類實例訪問內部類成員變數。
你想不通的肯定是指內部類的私有變數怎麼可以被外部類訪問吧,按常規,私有變數m只能在InnerClass里被訪問,
但你要注意,內部類就相當於一個外部類的成員變數,舉個例子。
class
Outer{
private
int
m;
private
class
Inner{
private
int
n;
private
int
k;
}
}
m和類Inner都是成員變數,他們之間是平等的,唯一不同的就是Inner它是包裝了幾個成員變數比如n,k,也就是說m
n
k是平等的,區別在於訪問n
k要通過Inner,就是要建立Inner實例訪問nk,這樣解釋夠明白了吧
❼ c++內部類訪問外部類的方法
內部類就是外部類的友元類,內部類可以通過外部類的對象來訪問外部類的所有成員。
❽ java 內部類怎麼調用外部類的函數
你好!
方法1:定義內部類的一個對象,用該對象調用外部類的成員函數
方法2:直接用語句:this.外部類的成員函數名。
僅代表個人觀點,不喜勿噴,謝謝。
❾ java內部類可以訪問外部類的靜態方法嗎
內部類
就相當於一個外部類的
成員變數
,所以可以
直接訪問
外部變數
,外部類不能直接訪問內部類變數,必須通過創建內部類實例的方法訪問,
new
InnerClass
(32).m就是創建內部類實例訪問內部類成員變數。
你
想不通
的肯定是指內部類的私有變數
怎麼可以
被外部類訪問吧,按常規,私有變數m只能在InnerClass里被訪問,
但你要注意,內部類就相當於一個外部類的成員變數,舉個例子。
class
Outer{
private
int
m;
private
class
Inner{
private
int
n;
private
int
k;
}
}
m和類Inner都是成員變數,他們之間是平等的,唯一不同的就是Inner它是包裝了幾個成員變數比如n,k,也就是說m
n
k是平等的,區別在於訪問n
k要通過Inner,就是要建立Inner實例訪問nk,這樣解釋夠
明白了吧