1. 程式人生 > >靜態內部類定義在類中,任何方法外,用static定義

靜態內部類定義在類中,任何方法外,用static定義

static sys 需要 有一個 out col 定義 pub 不可

靜態內部類:(註意:前三種內部類與變量類似,所以可以對照參考變量)

靜態內部類定義在類中,任何方法外,用static定義。

靜態內部類只能訪問外部類的靜態成員。

生成(new)一個靜態內部類不需要外部類成員:這是靜態內部類和成員內部類的區別。靜態內部類的對象可以直接生成:

Outer.Inner in=new Outer.Inner();

而不需要通過生成外部類對象來生成。這樣實際上使靜態內部類成為了一個頂級類。

靜態內部類不可用private來進行定義。例子:

對於兩個類,擁有相同的方法:

People

{

run();

}

Machine{

run();

}

此時有一個robot類:

class Robot extends People implement Machine.

此時run()不可直接實現。

註意:當類與接口(或者是接口與接口)發生方法命名沖突的時候,此時必須使用內部類來實現。

用接口不能完全地實現多繼承,用接口配合內部類才能實現真正的多繼承。

 1 package TomText;
 2 //測試對實例成員和類成員的不同訪問形式。
 3 public class TomText_44 {
 4     static int i=1;
 5     int j=1;
 6     static void printStatic( ){
 7         System.out.println("i="+i);
8 //System.out.println("j="+j); //非法訪問 9 } 10 void print(){ 11 System.out.println("i="+i); 12 System.out.println("j="+j); 13 } 14 public static void main(String [ ] args){ 15 TomText_44.printStatic( ); 16 //StaticTest.print( );
//非法訪問 17 TomText_44.i=2; 18 //StaticTest.j=2; //非法訪問 19 TomText_44 st=new TomText_44( ); 20 st.i=3; 21 st.j=3; 22 st.print( ); 23 st.printStatic( ); 24 } 25 26 }

靜態內部類定義在類中,任何方法外,用static定義