内部类详解————静态嵌套类
程序员文章站
2022-06-01 11:34:41
...
定义
静态嵌套类,又叫嵌套类或静态内部类。是使用static关键字修饰的内部类。
书写形式
一般的书写形式:
public class Outter {
/** 嵌套类,public等四种访问修饰符均可修饰*/
public static class Inner {
/** 嵌套类内部*/
}
}
接口中的书写形式:
public interface OutInterface {
/** 嵌套类,在接口中定义的任何类都自动的是public和static的,因此这两个关键字都可以省略*/
class Inner {
public void print() {
System.out.println("print()");
}
}
}
嵌套类的语法规则
规则一:不能从嵌套类中访问外部类的非静态成员。
规则二:与普通内部类不同,嵌套类实例化不需要依赖外部类对象,与外部类没有必然联系。
public class Outter {
/** 嵌套类*/
public static class Inner {
}
public static void main(String[] args) {
Outter.Inner inner = new Inner();
}
}
规则三:与普通内部类的区别如下:
普通内部类只能包含非静态变量、非静态方法、非嵌套类。
静态嵌套类可以包含静态和非静态变量、静态和非静态方法、静态和普通内部类。
(注意:“嵌套类中包含”与规则一中的“嵌套类中访问”是不同的含义,区别在于“访问”是嵌套类中调用嵌套类之外定义的成员,而“包含”则表示在嵌套类中定义)
规则四:嵌套类可以定义在接口中,并作为接口的一部分来使用。
《Java编程思想》(第四版,P203)
如果你想要创建某些公共代码,使得它们可以被某个接口的所有不同实现所共用,那么使用接口内部的嵌套类会显得很方便。
代码实例:
/** 接口*/
public interface OutInterface {
void method_1();
void method_2();
/** 嵌套类*/
class Inner {
public void print() {
System.out.println("print something...");
}
}
}
/** 实现类 */
public class OutInterfaceImpl implements OutInterface {
private OutInterface.Inner inner = new Inner();
@Override
public void method_1() {
inner.print();
}
@Override
public void method_2() {
inner.print();
}
public static void main(String[] args) {
OutInterface oif = new OutInterfaceImpl();
oif.method_1();
oif.method_2();
}
}
输出结果:
print something...
print something...
综上,就是静态嵌套类的详细使用,其中需要注意的问题,已经列在规则中,经过博主实操,大概也就这些内容,如有疑问和建议,欢迎文末留言。 *v*