Inner Class和Static Nested Class的区别?
区别 Class static nested INNER
2023-09-11 14:15:23 时间
Inner Class:内部类
- 内部类就是在一个类的内部定义的类
- 内部类中不能定义静态成员
- 内部类可以直接访问外部类中的成员变量
- 内部类可以定义在外部类的方法外面,也可以定义在外部类的方法体中
- 在方法体外面定义的内部类的访问类型可以是public,protecte,默认的,private等4种类型
- 方法内部定义的内部类前面不能有访问类型修饰符,可以使用 final 或 abstract 修饰符
- 创建内部类的实例对象时,一定要先创建外部类的实例对象,然后用这个外部类的实例对象去创建内部类的实例对象
- 内部类里还包含匿名内部类,即直接对类或接口的方法进行实现,不用单独去定义内部类
//内部类的创建语法
Outer outer = new Outer();
Outer.Inner inner = outer.new Innner();
Static Nested Class:静态嵌套类
- 不依赖于外部类的实例对象
- 能访问外部类的非 static 成员变量
- 不能直接访问需要创建外部类实例才能访问非静态变量
- 可以直接引用外部类的static的成员变量,不需要加上外部类的名字
- 在静态方法中定义的内部类也是Static Nested Class
//静态内部类创建语法
Outter.Inner inner = new Outter.Inner();
来一道刷了进BAT的面试题?
相关文章
- JavaScript undefined 与 null 的区别
- 普通函数与回调函数的区别
- Class类的getDeclaredFields()与getFields()方法的区别?
- Spark on yarn的client、cluster模式提交job流程及区别
- Class.forName和ClassLoader到底有啥区别
- mysql5.5版本和mysql 5.6版本具体有哪些区别?
- android 适配器simpleadapter和baseadapter区别
- C++中 *&(指针引用)与*(指针)的区别
- Python 中xrange和range区别
- @Html.Partial,@Html.Action,@Html.RenderPartial,@Html.RenderAction区别
- @Autowired与@Resource的区别
- Class.forName和ClassLoader.loadClass的区别
- 少勇 #import和@class的区别
- synchronized(this)、synchronized(class)与synchronized(Object)的区别
- mybatis中#{}和${}的区别
- C++实操 - struct和class的区别