内部类
内部类类型
public class NestedClassDome01 { //静态内部类 private static class StaticNestedClass{ } //普通内部类 private class FieldInnerClass{ } void test(){ //局部内部类 class LocalClass{ } //局部匿名内部类 Runnable run=new Runnable(){ @Override public void run() { // TODO Auto-generated method stub }}; } }
静态内部类基本用法
可以包含静态和非静态成员
静态内部类可以访问外部类的静态属性和静态方法,不能调用外部类的普通方法和属性
在不相关类中,可以直接创建静态内部类的对象
普通内部类
可以方便使用外部类的所有成员,只为外部类服务
内部类中 this代表内部类的对象,引用外部类对象为Out03.this
Outer03 out=new Outer03( );
Outer03.InnerClass ic=out.new InnerClass( )
成员内部类不能有静态成员变量和方法,除非申明为final并且只能是编译器可以确定值的常量,如果有static InnerClass,内部类对象完全脱离外部类对象,违背了普通内部类的设计初衷
方法内部类
相当于方法中的局部变量,不能用private、protected等修饰
只能定义非静态的成员
不能引用所在方法的普通局部变量,除非是常量。原因如下:方法的生命周期和方法内部类对象的生命周期不一致。方法执行完,内部类对象仍可能存在
匿名内部类三种方式:继承式,接口式,参数式
public class NestedClassDome03 { Father father=new Father(){ @Override public void test() { } }; } abstract class Father{ public abstract void test(); }
相关推荐
Ericbig 2020-03-03
Greatemperor 2020-07-18
Wonder的学习 2020-06-08
卷卷萌 2020-04-20
真新镇的涅法雷姆 2020-04-10
madewobadan 2020-01-13
duanlove技术路途 2019-12-28
georgeandgeorge 2019-10-31
ustcrding 2012-02-06
x青年欢乐多 2019-05-07
austindev 2017-09-27
bigcactus 2012-06-14
yinbaoshiguang 2019-07-01
刘小文 2016-11-16
SilentPaladin 2014-07-24
CherrylinORC 2013-04-10
jddlcg 2012-09-17
longxx 2012-04-18
zgwyfz 2016-08-07