静态内部类:(注意:前三种内部类与变量类似,所以可以对照参考变量)
静态内部类定义在类中,任何方法外,用static定义。
静态内部类只能访问外部类的静态成员。
生成(new)一个静态内部类不需要外部类成员:这是静态内部类和成员内部类的区别。静态内部类的对象可以直接生成:
Outer.Inner in=new Outer.Inner();
而不需要通过生成外部类对象来生成。这样实际上使静态内部类成为了一个*类。
静态内部类不可用private来进行定义。例子:
对于两个类,拥有相同的方法:
People
{
run();
}
Machine{
run();
}
此时有一个robot类:
class Robot extends People implement Machine.
此时run()不可直接实现。
注意:当类与接口(或者是接口与接口)发生方法命名冲突的时候,此时必须使用内部类来实现。
用接口不能完全地实现多继承,用接口配合内部类才能实现真正的多继承。
package TomText;
//测试对实例成员和类成员的不同访问形式。
public class TomText_44 {
static int i=1;
int j=1;
static void printStatic( ){
System.out.println("i="+i);
//System.out.println("j="+j); //非法访问
}
void print(){
System.out.println("i="+i);
System.out.println("j="+j);
}
public static void main(String [ ] args){
TomText_44.printStatic( );
//StaticTest.print( ); //非法访问
TomText_44.i=2;
//StaticTest.j=2; //非法访问
TomText_44 st=new TomText_44( );
st.i=3;
st.j=3;
st.print( );
st.printStatic( );
} }