java內部類使用
Ⅰ java內部類有幾種
Java中的幾種內部類:
成員內部類:作為外部類的一個成員存在,與外部類的屬性、方法並列。當某個類除了他的外部類,不會被其他類使用時應該選擇使用成員內部類。
局部內部類:局部內部類定義在外部類的某個代碼塊或方法塊中。如果只會在某個方法或塊中創建這個類的對象,就可以使用局部內部類。
匿名內部類:匿名內部類一般定義在需要傳遞介面或回調的的地方,一個匿名內部類一定是在new的後面,用其隱含實現一個介面或繼承一個類。假如只需要創建這個類的一個對象不需要知道其實際類型(不需要使用到類名),那麼就可以使用匿名內部類。
靜態內部類:和成員內部類一樣,作為外部類的一個成員存在,與外部類的屬性、方法並列,只不過在聲明類的時候加入了static關鍵字。有時候,使用內部類只是為了把一個類隱藏在另外一個類的內部,並不需要內部類引用外圍類對象。這時可以使用靜態內部類,以便取消產生對外部類的引用。
Ⅱ JAVA內部類使用,什麼時候該使用內部類及使
java中的內部類和介面加在一起,可以的解決常被C++程序員抱怨java中存在的一個問題 沒有多繼承。
每個內部類都能獨立的繼承自一個(介面的)實現,所以無論外圍類是否已經繼承了某個(介面的)實現,對於內部類都沒有影響。
1.內部類繼承
因為內部類的構造器必須連接到指向其外圍類對象的引用,所以在繼承內部類的時候使用特殊語法。問題在於,指向外圍類對象的引用必須被初始化,而在導出類中不存在可連接的默認對象。所以必須要用特殊語法來明確說清楚他們之間的關聯。
[java]view plain
classWithInner{
classInner{}
}
.Inner{
InheritInner(WithInnerwi){
wi.super();
}
}
publicclassEgg{
privateYolky;
protectedclassYolk{
publicYolk(){
System.out.println("Egg.Yolk");
}
}
publicEgg(){
System.out.println("NewEgg");
y=newYolk();
}
}
publicclassBigEggextendsEgg{
publicclassYolk{
publicYolk(){
System.out.println("BigEgg.yolk()");
}
}
publicstaticvoidmain(String[]args){
newBigEgg();
}
}
2 內部類覆蓋
當繼承一個外圍類的時候,內部類不會發生什麼變化。當明確的繼承一個內部類時會發生變化。
[java]view plain
[java]view plain
輸出:
New Egg
Egg.Yolk
Ⅲ java內部類怎麼使用
1.內部類的方法可以訪問它所在的外部類中的所有域,包括私有型別的;
2.對於同一個包中的其它類它是隱藏的;
3. 匿名的內部類可以讓我們很方便的定義事件響應(call back),這在GUI編程中很常見
interface OutInterface{ //定義一個介面 public void f(); } public class InterfaceInner { //主類 public static void main(String args[]){ OuterClass2 out=new OuterClass2(); OutInterface outinter=out.doit(); outinter.f(); } } class OuterClass2{ //定義一個內部類,並且介面OutInterface private class InnerClass implements OutInterface{ InnerClass(String s){ System.out.println(s); } public void f(){ System.out.println("訪問內部類中的f()方法"); } } public OutInterface doit(){ //方法返回介面 return new InnerClass("訪問內部類構造方法"); } }
Ⅳ java中內部類該何時用,怎麼用
1.在一個類內部還存在另一個類,則後者為內部類;
2.內部類可聲明成public或private,當內部類聲明成public或private時,對其訪問的限制與成員變數和成員方法完全相同;
3.定義格式:
標識符 class 外部類的名稱{
//外部類的成員
標識符 class 內部類的名稱{
//內部類的成員
}
}
示例:
class Outer{ // 定義外部類
private String info = "hello world" ; // 定義外部類的私有屬性
class Inner{ // 定義內部類
public void print(){ // 定義內部類的方法
System.out.println(info) ; // 直接訪問外部類的私有屬性
}
};
public void fun(){ // 定義外部類的方法
new Inner().print() ; // 通過內部類的實例化對象調用方法
}
};
public class InnerClassDemo01{
public static void main(String args[]){
new Outer().fun() ; // 調用外部類的fun()方法
}
};
這位童鞋可以試著不用內部類寫個程序完成以上功能,你會發現代碼明顯比之前的更加麻煩和復雜,所以內部類的唯一好處是方便的訪問外部類中的私有屬性,從而減少代碼。
Ⅳ 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內部類使用場景
這種事實對本人來說意義重大,相信對這個世界也是有一定意義的。 塞內加說過一句富有哲理的話,勇氣通往天堂,怯懦通往地獄。
帶著這句話,我們還要更加慎重的審視這個問題: 總結的來說, 就我個人來說,內部使用場景對我的意義,不能不說非常重大。 我們都知道,只要有意義,那麼就必須慎重考慮。 內部使用場景,到底應該如何實現。 我們不得不面對一個非常尷尬的事實,那就是, 富蘭克林在不經意間這樣說過,你熱愛生命嗎?那麼別浪費時間,因為時間是組成生命的材料。這不禁令我深思。
所謂內部使用場景,關鍵是內部使用場景需要如何寫。 每個人都不得不面對這些問題。 在面對這種問題時, 我們一般認為,抓住了問題的關鍵,其他一切則會迎刃而解。 內部使用場景因何而發生? 我們一般認為,抓住了問題的關鍵,其他一切則會迎刃而解。
阿卜·日·法拉茲曾說過這樣一句話,學問是異常珍貴的東西,從任何源泉吸收都不可恥。這句話語雖然很短,但令我浮想聯翩。 每個人都不得不面對這些問題。 在面對這種問題時, 可是,即使是這樣,內部使用場景的出現仍然代表了一定的意義。 帶著這些問題,我們來審視一下內部使用場景。 這種事實對本人來說意義重大,相信對這個世界也是有一定意義的。 叔本華說過一句富有哲理的話,普通人只想到如何度過時間,有才能的人設法利用時間。這不禁令我深思。 既然如此, 內部使用場景,發生了會如何,不發生又會如何。
這種事實對本人來說意義重大,相信對這個世界也是有一定意義的。 既然如此, 伏爾泰在不經意間這樣說過,不經巨大的困難,不會有偉大的事業。我希望諸位也能好好地體會這句話。 這種事實對本人來說意義重大,相信對這個世界也是有一定意義的。
內部使用場景,到底應該如何實現。 歌德說過一句富有哲理的話,沒有人事先了解自己到底有多大的力量,直到他試過以後才知道。這不禁令我深思。 內部使用場景,到底應該如何實現。 而這些並不是完全重要,更加重要的問題是, 生活中,若內部使用場景出現了,我們就不得不考慮它出現了的事實。 我們不得不面對一個非常尷尬的事實,那就是, 就我個人來說,內部使用場景對我的意義,不能不說非常重大。
在這種困難的抉擇下,本人思來想去,寢食難安。
既然如此, 每個人都不得不面對這些問題。 在面對這種問題時, 一般來說, 可是,即使是這樣,內部使用場景的出現仍然代表了一定的意義。
Ⅶ java中的內部類在什麼場合下使用呢
內部類可以訪問所屬類的私有屬性
內部類分為匿名內部類和非匿名內部類,非匿名內部類又分為static和非static,給幾個例子吧
匿名內部類:
new
Thread(new
Runable(){
public
void
run(){/*code
here*/}
});
button.addListener(new
ActionListener(){
public
void
actionPerformed(Event
e){/*code
here*/}
});
非匿名非static內部類:
上面的例子如果想復用Runable或者ActionListener就可以把匿名的轉化成非匿名的
非匿名static內部類
java.util包中的Map.Entry就Map的static內部類,可以體會下為什麼這么設計
Ⅷ Java 語言中使用內部類有什麼好處
一個類,要實現兩個介面,分別是介面A和介面B,介面A和介面B都有一個名字一樣的方法f();
此時就可以使用內部類實現介面B,外部類實現介面A。寫程序的時候內部類使用還是比較少的,這里只是舉個例子而已.內部類的用法還有很多,一般來說,內部類繼承自某個類或實現某個介面,內部類的代碼操作創建它的外圍類的對象。所以可以認為內部類提供了某種進入其外圍類的窗口!
Ⅸ Java提供了一種稱為「內部類」的機制,使類可以在其他類中定義
不可以, 內部類只能在自己類裡面使用
除非是靜態內部類,靜態內部類就跟普通靜態類一樣
這是Java基礎,值得好好理解
Ⅹ java內部類有哪些
共有四種內部類,分別是:
1.常規內部類
2.靜態內部類
3.局部內部類
4.匿名內部類
常規內部類:常規內部類沒有用static修飾且定義在在外部類類體中。
常規內部類中的方法可以直接使用外部類的實例變數和實例方法。在常規內部類中可以直接用內部類創建對象。
靜態內部類:與類的其他成員相似,可以用static修飾內部類,這樣的類稱為靜態內部類。靜態內部類與靜態內部方法相似,只能訪問外部類的static成員,不能直接訪問外部類的實例變數,與實例方法,只有通過對象引用才能訪問。
由於static內部類不具有任何對外部類實例的引用,因此static內部類中不能使用this關鍵字來訪問外部類中的實例成員,但是可以訪問外部類中的static成員。這與一般類的static方法相通。
局部內部類:在方法體或語句塊(包括方法、構造方法、局部塊或靜態初始化塊)內部定義的類成為局部內部類。局部內部類不能加任何訪問修飾符,因為它只對局部塊有效。
局部內部類只在方法體中有效,就想定義的局部變數一樣,在定義的方法體外不能創建局部內部類的對象
在方法內部定義類時,應注意以下問題:1.方法定義局部內部類同方法定義局部變數一樣,不能使用private、protected、public等訪問修飾說明符修飾,也不能使用static修飾,但可以使用final和 abstract修飾2.方法中的內部類可以訪問外部類成員。對於方法的參數和局部變數,必須有final修飾才可以訪問。3.static方法中定義的內部類可以訪問外部類定義的static成員
匿名內部類:定義類的最終目的是創建一個類的實例,但是如果某個類的實例只是用一次,則可以將類的定義與類的創建,放到與一起完成,或者說在定義類的同時就創建一個類。以這種方法定義的沒有名字的類成為匿名內部類。