A. java內部類有幾種
Java中的幾種內部類:
成員內部類:作為外部類的一個成員存在,與外部類的屬性、方法並列。當某個類除了他的外部類,不會被其他類使用時應該選擇使用成員內部類。
局部內部類:局部內部類定義在外部類的某個代碼塊或方法塊中。如果只會在某個方法或塊中創建這個類的對象,就可以使用局部內部類。
匿名內部類:匿名內部類一般定義在需要傳遞介面或回調的的地方,一個匿名內部類一定是在new的後面,用其隱含實現一個介面或繼承一個類。假如只需要創建這個類的一個對象不需要知道其實際類型(不需要使用到類名),那麼就可以使用匿名內部類。
靜態內部類:和成員內部類一樣,作為外部類的一個成員存在,與外部類的屬性、方法並列,只不過在聲明類的時候加入了static關鍵字。有時候,使用內部類只是為了把一個類隱藏在另外一個類的內部,並不需要內部類引用外圍類對象。這時可以使用靜態內部類,以便取消產生對外部類的引用。
B. java可以在方法內部定義內部類嗎
可以的
把類放在方法內
class Outer {
public void doSomething(){
class Inner{
public void seeOuter(){
}
}
}
}
(1)、方法內部類只能在定義該內部類的方法內實例化,不可以在此方法外對其實例化。
(2)、方法內部類對象不能使用該內部類所在方法的非final局部變數。
因為方法的局部變數位於棧上,只存在於該方法的生命期內。當一個方法結束,其棧結構被刪除,局部變數成為歷史。但是該方法結束之後,在方法內創建的內部類對象可能仍然存在於堆中!例如,如果對它的引用被傳遞到其他某些代碼,並存儲在一個成員變數內。正因為不能保證局部變數的存活期和方法內部類對象的一樣長,所以內部類對象不能使用它們。
C. java中一個方法裡面可以再定義一個方法么
不能,方法內部只能調用一個方法,或者你可以使用方法的內部類來實現方法內部類中定義方法。
D. java中能在方法中定義方法嗎
方法中不能直接定義方法,但可以在方法中定義類,類裡面再定義方法:
Java code?
public static void main(String[] args) {
class B {
void test() {
System.out.println("test()");
}
}
new B().test();
}
E. java中靜態內部類是怎麼定義的
需要了解2個概念:內部類和靜態修飾符static
1)首先,用內部類是因為內部類與所在外部類有一定的關系,往往只有該外部類調用此內部類。所以沒有必要專門用一個Java文件存放這個類。
2)靜態都是用來修飾類的內部成員的。比如靜態方法,靜態成員變數,靜態常量。它唯一的作用就是隨著類的載入(而不是隨著對象的產生)而產生,以致可以用類名+靜態成員名直接獲得。
這樣靜態內部類就可以理解了,因為這個類沒有必要單獨存放一個文件,它一般來說只被所在外部類使用。並且它可以直接被用
外部類名+內部類名
獲得。
以下舉例說明怎麼使用:
Student類有個叫School的內部類(非靜態)
Student
stu
=
new
Student();
stu.School
sch
=
new
stu.School();
sch就是School的一個對象。
假如School是內部靜態類:
Student.School
sch
=
new
Student.School();
F. 在java定義內部類
public class A {
void a{ class B{...} }
public static void main(String[] args {
...
}
public class A {
public class B {
...}
public static void main(String[] args {
...
}
這些都是可以的
public class A {
void a {
Protected class B {
...}
}
public static void main(String[] args {
...
}
這一個不可以。
對於內部類,就想類的屬性一樣,可以用 public private protected 修飾,或者什麼都不加,但是如果這個內部類在類的方法裡面,public private protected都不能使用。就想在方法中定義變數不能加這三個修飾符一樣,方法中的內部類也不能使用設三個修飾符,在方法中定義一個內部類,一般是為了隱藏某種實現細節,這個方法中的內部類是不能在這個方法之外用new 關鍵字來創建的,但是可以作為這個方法的返回參數。
關於你補充的問題,我還沒使用過。我覺得Java作為一門高級語言,應該有這方面的設計,我沒有用過。
G. java 在方法中定義內部類 訪問方法的參數或方法中的變數
親測1.6 1.7都會編譯出錯.
Java 8的新特性,但其實只是讓你方便一點,在你這個內部類里效果等同於final
比如,如果你想修改x或info
a = 100
那麼會告訴你:
Local variable defined in an enclosing scope must be final or effectively final
注意後面說的effectively final,就是說表面上沒有final修飾,但實際上必須和final有相同的效果
H. Java 類中定義方法的問題
類中方法定義內部類通常是為了隱藏實現。
此處為這次測試的代碼清單:
值得注意的是,類B前智能加final或abstract,不能加public private protected,而且方法a()不能定義為
B a()
{
class B implement C{...}
...
return new B();
}
而一定要返回外部定義了的介面C或者外部定義了的父類。
I. java方法內部 能不能寫方法
肯定不行的,比如public void h(){ void f(){}}這樣的語句是錯誤的,只能在方法內部調用其他方法,不能在方法內部定義方法,也就是不支持內部方法。
J. java 中方法內可以定義方法嗎方法內可以定義類嗎
方法里不能定義方法
方法里可以定義類(內部類 匿名類)
於是方法中還是可以間接定義方法的
樓上的胡說