四大内部类简单小结
来源:互联网 发布:用友软件维护合同 编辑:程序博客网 时间:2024/06/04 18:25
1. 实例内部类(类的内部,方法外部,没有static修饰)
实例内部类也叫成员内部类,是最普通的内部类:
1)实例内部类对象依托于外部类对象。
2)对象构建方式:先构建外部类对象,再构建内部类对象
3)可以访问外部类所有成员(静态,非静态), 即使是private的
例如:
classOuter
{
classInner
{
}
}
Outer.Innero1 = new Outer().new Inner();
注意:
1)虽然成员内部类可以无条件地访问外部类的成员,而外部类想访问成员内部类的成员却不是这么随心所欲了。在外部类中如果要访问成员内部类的成员,必须先创建一个成员内部类的对象,再通过指向这个对象的引用来访问。
2)内部类可以拥有 private访问权限、protected访问权限、public访问权限及包访问权限 。如果成员内部类Inner用private修饰,则只能在外部类的内部访问,如果用public修饰,则任何地方都能访问; 如果用protected修饰,则只能在同一个包下或者继承外部类的情况下访问;如果是默认访问权限,则只能在同一个包下访问。
2. 静态内部类(类的内部,方法外部,有static修饰)
1)静态内部类不依赖于外部类对象。
2)对象构建方式:允许直接内部类对象
3)静态内部类只能访问外部类所有静态成员
例如:
classOuter
{
staticclass Inner
{
}
}
Outer.Innero1 = new Outer.Inner();
3. 局部内部类(定义在方法内部)
1)局部内部类的对象只能在定义此类的方法内部构建
2)局部内部类可以访问类中所有成员,但只能访问本方法内部使用final修饰的常量
例如:
public class OutterClass3 {
public String name;
public void run(final int a) {
final int x = 100;
class InnerClass {
public int i;
public void innerRun() {
System.out.println(name);
System.out.println(i);
System.out.println(x);
//x定义如前面没有final,则不能访问x,(a同样)。是由于局部变量生存期的原因,加上final延长生存期就可以了
}
}
}
}
注意:局部内部类不能使用static修饰
4. 匿名内部类
匿名内部类是我们编写代码时,最常用的一种内部类,在编写事件监听的代码时使用匿名内部类不但方便,而且使代码更加容易维护。
1)匿名内部类会有一个父类(可能是具体类,抽象类,接口)
2)匿名内部类没有名字,但有类体(代码块)
3)匿名内部类假如写到了方法内部,它就是特殊的局部内部类
classA{public void run(){}}
interfaceIM{void show();}
classOuter
{
privateA a = new A(){public void run(){}};
publicvoid display()
{
IMm = new IM(){void show(){};};
}
}
注意:
1)匿名内部类不能有访问修饰符和static修饰符的 。
- 四大内部类简单小结
- 四大内部类
- 四大内部类
- 四大 Java 内部类总结
- 面向对象-四大内部类
- java内部类小结
- 内部类小结
- Java内部类小结
- 内部类笔记小结
- java内部类小结
- Java内部类小结
- 内部类学习小结
- Java 内部类小结
- 内部类小结
- Java内部类小结
- Java内部类小结
- java内部类小结
- 内部类小结
- HttpUtils请求XML文件,XStream解析
- 记一次失败的kaggle比赛(3):失败在什么地方,贪心筛选特征、交叉验证、blending
- 两招让你成为牛X的T型人才
- Butter Knife高级用法
- expression="execution(* com.controller.*.*(..))"
- 四大内部类简单小结
- HTML5——增强页面元素
- 单例模式(一)
- java多线程简单demo
- TOEFL分析之——写作句型
- Bundler 及 PMVS 常见问题&解决方法
- 刷油漆(树形dp)
- 证券期货行业信息系统运维管理规范
- eclipse中使用maven插件-Dmaven.multiModuleProjectDirectory system propery is not set.