Effective Java之内部类
Effective Java中对类的权限,接口等的要求,总结起来就是够用就行,不要赋予过多的访问权限,类的定义也是,如果某个类只会在类的内部使用,那就将该类定义为内部类吧。
内部类分为四种:
1、静态内部类:静态内部类就是在class前面多了static关键词的内部类,这种类和类的静态方法和静态变量一样,针对类本省进行操作,在静态内部类中可以随意访问其所在类的静态方法和静态变量。
2、非静态内部类:和静态内部类相对于,其实在类内部定义的所有东西只是受到访问修饰符的限制,所以非静态内部类和类的非静态方法一样,可以访问其所在类的所有东西,只是在内部类中,this的含义可能有所改变。
3、匿名类:匿名类是在创建类对象时才写类的方法体的一种定义类的方式,描述起来有点困难,下面给一个简单例子。
4、局部类:局部类和非静态内部类是一样一样的,区别在于他们的作用范围,非静态内部类的作用范围是整个类,那么局部类的作用范围就是它所在的作用域了。
下面先给一个非静态内部类的例子:
package alibaba; public class InnerClass { public int i; class HelloWorld { public void setI(int k) { i = k; } } public static void main(String[] args) { // TODO Auto-generated method stub InnerClass ic = new InnerClass(); HelloWorld hw = ic.new HelloWorld(); hw.setI(3); System.out.println(ic.i); } }
例子很简单,打印出来的结果就是3。
下面再来一个匿名类的例子:
interface pr { void print1(); } public class noNameClass { public pr dest() { return new pr(){ public void print1() { System.out.println("Hello world!!"); } }; }
最后返回的对象就是一个匿名内部类了。
不过想想内部类在平时写代码的过程中用的却是不多,只是在HashMap的源码中看到过非静态内部类Entry,可能是平时在写代码的过程中没有注意吧。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。