靜態內部類定義在類中,任何方法外,用static定義
阿新 • • 發佈:2018-08-04
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定義