導航:首頁 > 編程語言 > java內部類方法調用

java內部類方法調用

發布時間:2022-05-04 03:25:20

java 匿名內部類中的成員變數和成員方法如何調用

使用匿名內部類課使代碼更加簡潔、緊湊,模塊化程度更高。內部類能夠訪問外部內的一切成員變數和方法,包括私有的,而實現介面或繼承類做不到。然而這個不是我說的重點,我說的很簡單,就是匿名內部類的兩種實現方式:第一種,繼承一個類,重寫其方法;第二種,實現一個介面(可以是多個),實現其方法。
public class TestAnonymousInterClass{
public static void main(String args[]){
TestAnonymousInterClass test=new TestAnonymousInterClass();
test.show();
}
//在這個方法中構造了一個匿名內部類
private void show(){
Out anonyInter=new Out(){// 獲取匿名內部類實例

void show(){//重寫父類的方法
System.out.println("this is Anonymous InterClass showing.");
}
};
anonyInter.show();// 調用其方法
}
}

// 這是一個已經存在的類,匿名內部類通過重寫其方法,將會獲得另外的實現
class Out{
void show(){
System.out.println("this is Out showing.");
}
}
程序運行的輸出結果為:

this is Anonymous InterClass showing.

所以在這里看出,匿名內部類有了自己的實現。其實很簡單,使用匿名內部類是因為我這地方需要有點什麼特殊的實現,所以我就在這地方把具體實現也給了出來了。然後我就在這地方獲取它的實例,調用它的方法。
介面的方式,只要把父類換成介面就行了,沒必要給出代碼了。

使用匿名內部類時我們不要忘了我們的目的,我們只是在這地方想對某個類有特殊的實現。而不要想得太多,在匿名內部編寫其它的方法。在匿名內部類中編寫的自己的方法是不可見的。此種做法是毫無意義的,當然一般也不會這么做。在這里只是告訴初學者對於匿名內部類不要想的太多,而要這么想:匿名內部類就是重寫父類或介面的方法。

匿名內部類是沒有名字的,所以我們沒辦法獲得其類型,而只能把它當作超類或介面類型來使用。

㈡ java外部類怎樣調用內部類方法

你這裡面有兩個錯:
1、Leis內部類是非靜態類,不能在靜態方法里初始化,即第三行Leis x=new Leis();報錯,可以把Leis類改成靜態類,即
public static class Leis{
......
}

2、Leis()是Leis類的構造函數,不能在第4行x.Leis()顯示調用

一句話:靜態方法里不能訪問非靜態內部類。但你可以在外部類的一個成員方法里訪問非靜態內部類,然後你再在靜態方法里初始化外部類,通過外部類來訪問非靜態內部類。

㈢ 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在外界如何調用局部內部類

  1. 內部類和成員變數一樣,通過外部類的實例調用內部類。

  2. 可以先創建外部類實例。

  3. 用外部類實例調用內部類構造方法創建內部類實例。

  4. 再用這個內部類實例調用內部類成員方法。

Aa=newA();
A.Bb=a.newB();
b.do1();//do是關鍵字,所以這里在do後面加了個1,否則無法編譯

㈤ java怎麼調用另一個類中的方法中的內部類中的方法

class Hello {
public static void pt(){
new A().ppt();
class A {
void ppt(){//ppt()方法不能在其他類中調用,只能在pt()方法中被調用
System.out.println("hello word");
}
}
}
}
public class Test {
public static void main(String[] args){
Hello.pt();
}
}

㈥ java 內部類怎麼調用外部類的函數

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

㈦ java內部調用內部方法的問題

Java內部調用內部方法主要是通過內部類實現。Java內部類分兩種,成員內部類和方法內部類。

代碼如下:

1.成員內部類
/**
*成員內部類
*/
publicclassOuter{
privateintouter=1;

classInner{
publicvoidshow(){
System.out.println("outer="+outer);
}
}

publicstaticvoidmain(String[]args){
Outer.Innerin=newOuter().newInner();
in.show();

}

}

2.方法內部類
/**
*方法內部類
*
*/
publicclassOuter2{
privateintouter=1;

publicvoidshowOut(){

classInner{
publicvoidshow(){
System.out.println("outer="+outer);
}
}
newInner().show();
}

publicstaticvoidmain(String[]args){
Outer2in=newOuter2();
in.showOut();

}

㈧ Java 內部類如何被外部類調用

服了你了,能把程序寫成這樣。一個java文件里可以有多個類,但只能有一個public類,而且這個類必須是外部類,不能是內部類。而且你在Test里實例化inner的方法也不對,inner的類型始終是Outer.Inner,不會因為Outer實例化而變成outer.Inner,只不過編譯器還沒有報出那裡的錯誤而已。寫成這樣:

class Outer{
private int size=10;
class Inner{
public void doStuff(){
System.out.println(++size);
}
}
}

public class Test{
public static void main(String [] args){
Outer outer=new Outer();
Outer.Inner inner=outer.new Inner();
inner.doStuff();
}
}

㈨ 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如何調用內部類的方法

在其他類中創建內部類的對象時,必須要使用外部類的實例來創建。比如類B是類A的內部類,則語句A.B=new A.B()將是錯誤的。正確的方法是先創建一個類A的對象,比如A ma=new ma();然後再用這個對象來創建內部類的實例,比如A.B mab=ma.new B();這里要注意後面的語法ma.new B()。也可以把這兩步合為一步,比如A.B mab=new A().new B();注意,這里使用了兩個new運算符,如果只有一個將是錯誤的,比如A.B mab=new A().B();是錯誤的,new A().B()語句JAVA會理解為創建一個無名的引用,然後由這個引用調用類A中的B()函數。如果需要調用的構造函數不是默認的,則可以這樣創建比如A.B mab=new A(2).new B();或者分為兩步A ma=new A(2); A.B mab=ma.new B();

而且我也怕是不是會重新建個棋盤,那就不行了!
這個你可以放心,不會創建兩個棋盤,下面舉例驗證

public class A2 extends JFrame {
public static void main(String[] args) {
A ma=new A(); //可以看到在這里並沒有創建內部類,也就是說內部類中的bbb並沒有輸出
A.A1 ma1=ma.new A1(); //調用內部類的方法,當然內部類如果有帶參數構造函數,則還應在內部類中加上參數。
ma1.f();
}}

class A{
A(){System.out.println("aaa");}
class A1{
A1(){System.out.println("bbb");}
public void f(){System.out.println("kkk");}}

}

閱讀全文

與java內部類方法調用相關的資料

熱點內容
如何壓縮文件夾聯想電腦 瀏覽:583
程序員的學習之旅 瀏覽:440
apkdb反編譯 瀏覽:922
雪花演算法為什麼要二進制 瀏覽:825
在文檔中打開命令行工具 瀏覽:608
android圖標尺寸規范 瀏覽:369
python實用工具 瀏覽:208
流量計pdf 瀏覽:936
科東加密認證價格 瀏覽:532
dos命令讀文件 瀏覽:996
成為程序員需要什麼學歷 瀏覽:672
pdf農葯 瀏覽:228
canal加密 瀏覽:497
日本安卓系統和中國有什麼區別 瀏覽:137
linux命令行修改文件 瀏覽:838
從編譯和解釋的角度看 瀏覽:649
徐志摩pdf 瀏覽:651
夏天解壓球視頻 瀏覽:304
全封閉壓縮機qd91h 瀏覽:668
如何在我的世界免費開一個伺服器 瀏覽:329