前言:
今天姐妹们对“静态方法调用内部类”都比较注意,看官们都想要知道一些“静态方法调用内部类”的相关知识。那么小编也在网摘上汇集了一些对于“静态方法调用内部类””的相关内容,希望各位老铁们能喜欢,我们一起来了解一下吧!定义
静态内部类,又叫静态嵌套类或嵌套类。是使用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的魅力---
---期待与您陪伴!---