龙空技术网

内部类详解——静态内部类

高级Bug调查员 301

前言:

今天姐妹们对“静态方法调用内部类”都比较注意,看官们都想要知道一些“静态方法调用内部类”的相关知识。那么小编也在网摘上汇集了一些对于“静态方法调用内部类””的相关内容,希望各位老铁们能喜欢,我们一起来了解一下吧!

定义

静态内部类,又叫静态嵌套类或嵌套类。是使用static关键字修饰的内部类。

书写形式

一般的书写形式:

public class Outter { /** 嵌套类,public等四种访问修饰符均可修饰*/ public static class Inner { /** 嵌套类内部*/ }}

接口中的书写形式:

public interface OutInterface { /** 嵌套类,在接口中定义的任何类都自动的是public和static的,因此这两个关键字都可以省略*/ class Inner { public void print() { System.out.println("print()"); } }}
嵌套类的语法规则

规则一:不能从嵌套类中访问外部类的非静态成员。这一点与Java基础语法中对静态非静态语法的相关描述完全一致。

规则二:与普通内部类不同,嵌套类实例化不需要依赖外部类对象,与外部类没有必然联系。

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...

总之,静态内部类可以具有一个普通类的所有特性,本质上他们并无二致,而且还可以通过访问修饰符如private等,来控制访问权限。

综上,就是静态嵌套类的详细使用,其中需要注意的问题,已经列在规则中,如有疑问和建议,欢迎文末留言。:)

---欢迎关注【Java圣斗士】,我是你们的小可爱(✪ω✪) Morty---

---专注IT职场经验、IT技术分享的灵魂写手---

---每天带你领略IT的魅力---

---期待与您陪伴!---

标签: #静态方法调用内部类 #怎么调用静态内部类