静态内部类与非静态内部类
2016-03-30 15:16
197 查看
最大区别,静态内部类只有一个与外围类的对应实例,而 非静态内部类只要每被调用一次都会有一个实例与外围类对应,比较耗费资源空间
非静态内部类
静态内部类
private static void staticAroundCall()
{
System.out.println("THIS IS CALL staticAroundCall ");
}
局部类 是只能在方法里面创建的类,并且不能定义为public,protected,private或者static类型
匿名内部类没有类名,没有class关键字也没有extends和implements等关键字修饰。
匿名内部类会隐式地继承一个父类或实现一个接口。这个例子最典型的就是 button事件,实现监听,并且有处理响应:
非静态内部类
import java.util.Locale; public class TestCalc{ //非静态内部类 public static void main(String[] args) { String name="let go"; TestCalc tc=new TestCalc(); //必须要有外围实例 比如 TestCalc类的实例tc tc.new InnerClass().sayhello(name); } private void AroundCall() { System.out.println("THIS IS CALL AroundCall "); } private class InnerClass{ public void sayhello(String name) { System.out.println(name + " welcome afertnoon !"); AroundCall(); } } }
静态内部类
import java.util.Locale; public class TestCalc{ //静态内部类 public static void main(String[] args) { String name="let go"; //不需要外围实例 [1] [2] 都可以 // new InnerClass().sayhello(name); //[1] new TestCalc.InnerClass().sayhello(name);//[2] } private void AroundCall() { System.out.println("THIS IS CALL AroundCall "); }
private static void staticAroundCall()
{
System.out.println("THIS IS CALL staticAroundCall ");
}
public static class InnerClass{ public void sayhello(String name) { System.out.println(name + " welcome afertnoon !"); //AroundCall(); 编译不通过 new TestCalc().AroundCall(); staticAroundCall();//可以直接访问外围静态方法 } } }
局部类 是只能在方法里面创建的类,并且不能定义为public,protected,private或者static类型
匿名内部类没有类名,没有class关键字也没有extends和implements等关键字修饰。
匿名内部类会隐式地继承一个父类或实现一个接口。这个例子最典型的就是 button事件,实现监听,并且有处理响应:
button.addActionListener(new ActionListener(){ //实现接口中的方法 @Override public void actionPerformed(ActionEvent e) { System.out.println("使用匿名内部类实现ActionListener接口"); } });
相关文章推荐
- springMVC访问静态资源
- 第五周项目1.4-三角形类雏形
- C#委托的介绍(delegate、Action、Func、predicate)
- Go net包介绍
- ubuntu14.04 + opencv3.1 + contrib modules
- aop自定义切面
- Activity 的 LaunchMode
- IntentService
- Linux(2):Linux系统关闭与重启
- Bzoj 3295: [Cqoi2011]动态逆序对 分块,树状数组,逆序对
- Linux目录结构剖析说明
- 每天一个linux命令(5):xargs命令
- 分页sql脚本
- Seven More Languages in Seven Weeks (读书笔记):Factor
- 喝啤酒案例[java编写]
- LeetCode 321. Create Maximum Number
- linux常用命令总结
- Longest Increasing Subsequence
- 利用KVO实现 UITextView 通过代码方式设置内容后,自动滚动到最后一行
- Java基础06 组合