Ⅰ java中為什麼不能定義 public static class A
一般情況下是不可以用static修飾類的。如果一定要用static修飾類的話,通常static修飾的是匿名內部類。
在一個類中創建另外一個類,叫做成員內部類。這個成員內部類可以靜態的(利用static關鍵字修飾),也可以是非靜態的。由於靜態的內部類在定義、使用的時候會有種種的限制。所以在實際工作中用到的並不多。
在開發過程中,內部類中使用的最多的還是非靜態地成員內部類。不過在特定的情況下,靜態內部類也能夠發揮其獨特的作用
Ⅱ java中static的用法
static可以修飾變數(屬性)、方法、代碼塊和內部類
static屬性:屬於這個類所有,即由該類創建的所有對象共享同一個static屬性。可以對象創建後通過對象名.屬性名和類名.屬性名兩種方式來訪問。也可以在沒有創建任何對象之前通過類名.屬性名的方式來訪問。
static方法:也可以通過對象名.方法名和類名.方法名兩種方式來訪問
static代碼塊:當類被第一次使用時(可能是調用static屬性和方法,或者創建其對象)執行靜態代碼塊,且只被執行一次,主要作用是實現static屬性的初始化。
static內部類:屬於整個外部類,而不是屬於外部類的每個對象。不能訪問外部類的非靜態成員(變數或者方法),.可以訪問外部類的靜態成員
Ⅲ 深入淺析Java中Static Class及靜態內部類和非靜態內部類的不同
37
38
/* 下面程序演示如何在java中創建靜態內部類和非靜態內部類 */
class OuterClass{
private static String msg = "GeeksForGeeks";
// 靜態內部類
public static class NestedStaticClass{
// 靜態內部類只能訪問外部類的靜態成員
public void printMessage() {
// 試著將msg改成非靜態的,這將導致編譯錯誤
System.out.println("Message from nested static class: " + msg);
}
}
// 非靜態內部類
public class InnerClass{
// 不管是靜態方法還是非靜態方法都可以在非靜態內部類中訪問
public void display(){
System.out.println("Message from non-static nested class: "+ msg);
}
}
}
class Main
{
// 怎麼創建靜態內部類和非靜態內部類的實例
public static void main(String args[]){
// 創建靜態內部類的實例
OuterClass.NestedStaticClass printer = new OuterClass.NestedStaticClass();
// 創建靜態內部類的非靜態方法
printer.printMessage();
// 為了創建非靜態內部類,我們需要外部類的實例
OuterClass outer = new OuterClass();
OuterClass.InnerClass inner = outer.new InnerClass();
// 調用非靜態內部類的非靜態方法
inner.display();
// 我們也可以結合以上步驟,一步創建的內部類實例
OuterClass.InnerClass innerObject = new OuterClass().new InnerClass();
// 同樣我們現在可以調用內部類方法
innerObject.display();
}
}
Ⅳ Java中為什麼不能定義 public static class A{}
一般情況下是不可以用static修飾類的。
如果一定要用static修飾類的話,通常static修飾的是匿名內部類。
例如:
public
class
Warp
{
public
static
class
Test<E>
{
public
E
get(E
e)
{
return
e;
}
}
public
static
void
main(String[]
args){
Test<String>
t
=
new
Warp.Test<String>();
String
a
=
t.get(new
String("abc"));
System.out.println("a="+a);
}
}
對於static關鍵字的應用:
1
用static修飾的成員變數叫類變數(或靜態變數),
而沒有用static修飾的成員變數叫對象變數(實例變數)
2
static修飾的數據不局限於所屬的對象,所以它不需要創建對象就可以直接訪問。
上面的程序我是參考鏈接總結的,你可以看看我寫的程序,也可以看看參考資料,不過參考資料有點亂,呵呵。
希望對你有所幫助。
Ⅳ Java靜態類(static class)是什麼意思
java一半不用static 修飾類,除非這個類是內部類,
在定義內部類的時候,可以在其前面加上一個許可權修飾符static。此時這個內部類就變為了靜態內部類。不過由於種種的原因,如使用上的限制等等因素(具體的使用限制,筆者在下面的內容中會詳細闡述),在實際工作中用的並不是很多。但是並不是說其沒有價值。在某些特殊的情況下,少了這個靜態內部類還真是不行。如在進行代碼程序測試的時候,如果在每一個Java源文件中都設置一個主方法(主方法是某個應用程序的入口,必須具有),那麼會出現很多額外的代碼。而且最主要的時這段主程序的代碼對於Java文件來說,只是一個形式,其本身並不需要這種主方法。但是少了這個主方法又是萬萬不行的。在這種情況下,就可以將主方法寫入到靜態內部類中,從而不用為每個Java源文件都設置一個類似的主方法。這對於代碼測試是非常有用的。
Ⅵ Java問題,怎麼能把static class提出來變成public class
額,你的理解有錯誤呢,一個可運行的代碼中只能有有個public class 這個不是隨便寫的,你的靜態方法,靜態類,是你在開始運行的時候就會載入的東西,你用的時候就直接調用就行了,你把他弄成public的,肯定是不行的,
所以你要是想把這個作為一個public的,你就新建一個類,然後把你的那些代碼弄過去就行了,下次需要的時候就直接調用就行
LeftistHeapNode c =new LeftistHeapNode();這樣就可以了
Ⅶ static class java{ public static void main(String[] args){ } }
publicclassjava{
publicstaticvoidmain(String[]args){
//dosomething...
}
}
這是java的程序入口,通常稱為主函數。
Ⅷ java中的private static class是什麼意思有什麼用謝謝
定義一個私有的靜態內部類。。。。。
比如有一個功能模塊 class A{}
這個模塊里,因為功能需要,需要一個更小的,功能單一的小模塊。
並且這個模塊是不需要實體化的,例如這個模塊的功能是字元串加密機。
是那種,拿來就能用的,直接取返回值,所以定義為靜態的。
因為是加密機,盡量不讓其他模塊訪問這個功能,就可以這么定義為私有的。
可以向下面這樣:
putlic calss A{
private static class A_a{
static String tat(String s){……}
}
}
類A裡面有一個私有的靜態類A_a,
內部靜態類A_a裡面有一個靜態的方法tat。
比如這是個字元串加密演算法。想吧"abc"加密,就這么用:String t = A_a.tat("abc");
字元串t就是加密過的「abc」了。當然這東西只能在A類裡面使用。外面是訪問不到的。
Ⅸ java static 兩個 Class 之間訪問
用反射吧
public class Container
{
static final String A = "First";
static final String B = "Second";
}
public class A extends Common
{
}
public class B extends Common
{
}
public class Common
{
public String getMyString() throws Exception
{
Field f = Container.class.getDeclaredField(getClass().getSimpleName());
f.setAccessible(true);
return (String) f.get(Container.class);
}
public static final void main(String []args)
{
try
{
System.out.print(new A().getMyString());//輸出First
System.out.print(new B().getMyString());//輸出Second
}
catch (Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Ⅹ 深入淺析Java中Static Class及靜態內部類和非靜態內部類的不同
。在java中我們可以有靜態實例變數、靜態方法、靜態塊。類也可以是靜態的。
java允許我們在一個類裡面定義靜態類。比如內部類(nested class)。把nested class封閉起來的類叫外部類。在java中,我們不能用static修飾頂級類(top level class)。只有內部類可以為static。
靜態內部類和非靜態內部類之間到底有什麼不同呢?下面是兩者間主要的不同。
(1)內部靜態類不需要有指向外部類的引用。但非靜態內部類需要持有對外部類的引用。
(2)非靜態內部類能夠訪問外部類的靜態和非靜態成員。靜態類不能訪問外部類的非靜態成員。他只能訪問外部類的靜態成員。
(3)一個非靜態內部類不能脫離外部類實體被創建,一個非靜態內部類可以訪問外部類的數據和方法,因為他就在外部類裡面。