【黑马程序员】Java基础学习技术博客——内部类
2014-08-06 06:43
369 查看
------- android培训、java培训、期待与您交流! ----------
package javase;
public class Day02_内部类 {
/*
* 类不可以被private 修饰?
* 错,内部类可以被private 修饰。。。因为类的成员可以被private修饰,并且成员之间可以相互访问,
* 内部类可以被static修饰,而外部类不可以,因为被static修饰的是所属于类,外部类是属于包的。
* 被static修饰的所属于外部类本身,否则则属于实例!
*
*
* 内部类如果被static静态修饰,那么它寄生在外部类本身里面
* 如果不被static修饰,那么它寄生在外部类的实例里面
* out.this代表内部类实例所寄生的宿主类的实例的引用。
* ====================================================================
*
* 非静态内部类
* 在外部其他类中调用非静态内部类:
* outer out = new outer ();
* outer.inner in = out.new inner();
* 简写就是 outer.inner in = new outer().new inner();
*
* 对内部类的继承:
* 里面的构造器必须先访问宿主类的构造器,由宿主对象来调用它的构造器。
* class Other extends outer.inner
* {
* Other()
* {
* new outer.super();
* //初始化代码块。。。
* }
*
* }
* 或者是:
* class Other extends outer.inner
* {
* Other(outer out ){
* out.super();
* }
*
* }
* ========================================================
* 对于静态内部类:你可以把外部类当成内部类的包就可以了。
* 静态内部类他是寄生在外部类的类本身中,所以它不需要创建宿主类的对象。
* outer.inner in = new out.inner();
* 对于继承:
* class Other extends outer.inner{}这样写就可以了,里面的内容跟定义普通类一样。不需要创建外部类的实例。
*
* =========================================================
* 局部内部类:
* 局部内部类可以被static修饰吗?
* 局部内部类不可以被static修饰,因为局部内部类的上一级程序单元是方法,而不是类,因此用static修饰没有任何意义。
* 另外因为局部内部类的作用域是方法,其他程序单元也不可能访问一个方法中的成员,所以任何访问权限修饰符都不能使用!
*
* Java中每个类都会有对应的class文件
* 局部内部类的class文件为:外部类$N内部类.class
* 为什么要用N?
* 因为不同的方法中可以定义相同类名的局部内部类
* =============================================================================
*
* 匿名内部类:是一个没有名字的内部类。
* 匿名内部类在创建时做了三件事:
* 1,定义了类
* 2,创建了对象
* 3,将子类实例赋值给了父类或者接口的引用
*
*
* 匿名内部类的两条规则:
* 1,匿名内部类必须显示的继承一个接口或者类。
* 2,匿名内部类不能定义构造器,因为匿名内部类没有名字
* 3,匿名内部类不能定义抽象方法,因为匿名内部类在创建时就返回了一个实例。
*
*
*
*
*
*
*
*
*
*
*/
}
package javase;
public class Day02_内部类 {
/*
* 类不可以被private 修饰?
* 错,内部类可以被private 修饰。。。因为类的成员可以被private修饰,并且成员之间可以相互访问,
* 内部类可以被static修饰,而外部类不可以,因为被static修饰的是所属于类,外部类是属于包的。
* 被static修饰的所属于外部类本身,否则则属于实例!
*
*
* 内部类如果被static静态修饰,那么它寄生在外部类本身里面
* 如果不被static修饰,那么它寄生在外部类的实例里面
* out.this代表内部类实例所寄生的宿主类的实例的引用。
* ====================================================================
*
* 非静态内部类
* 在外部其他类中调用非静态内部类:
* outer out = new outer ();
* outer.inner in = out.new inner();
* 简写就是 outer.inner in = new outer().new inner();
*
* 对内部类的继承:
* 里面的构造器必须先访问宿主类的构造器,由宿主对象来调用它的构造器。
* class Other extends outer.inner
* {
* Other()
* {
* new outer.super();
* //初始化代码块。。。
* }
*
* }
* 或者是:
* class Other extends outer.inner
* {
* Other(outer out ){
* out.super();
* }
*
* }
* ========================================================
* 对于静态内部类:你可以把外部类当成内部类的包就可以了。
* 静态内部类他是寄生在外部类的类本身中,所以它不需要创建宿主类的对象。
* outer.inner in = new out.inner();
* 对于继承:
* class Other extends outer.inner{}这样写就可以了,里面的内容跟定义普通类一样。不需要创建外部类的实例。
*
* =========================================================
* 局部内部类:
* 局部内部类可以被static修饰吗?
* 局部内部类不可以被static修饰,因为局部内部类的上一级程序单元是方法,而不是类,因此用static修饰没有任何意义。
* 另外因为局部内部类的作用域是方法,其他程序单元也不可能访问一个方法中的成员,所以任何访问权限修饰符都不能使用!
*
* Java中每个类都会有对应的class文件
* 局部内部类的class文件为:外部类$N内部类.class
* 为什么要用N?
* 因为不同的方法中可以定义相同类名的局部内部类
* =============================================================================
*
* 匿名内部类:是一个没有名字的内部类。
* 匿名内部类在创建时做了三件事:
* 1,定义了类
* 2,创建了对象
* 3,将子类实例赋值给了父类或者接口的引用
*
*
* 匿名内部类的两条规则:
* 1,匿名内部类必须显示的继承一个接口或者类。
* 2,匿名内部类不能定义构造器,因为匿名内部类没有名字
* 3,匿名内部类不能定义抽象方法,因为匿名内部类在创建时就返回了一个实例。
*
*
*
*
*
*
*
*
*
*
*/
}
相关文章推荐
- 【黑马程序员】Java基础学习技术博客——面向对象
- 【黑马程序员】Java基础学习技术博客——HTML
- 【黑马程序员】Java基础学习技术博客——基本数据类型
- 【黑马程序员】Java基础学习技术博客——配置环境变量和编写第一个Java程序
- 【黑马程序员】Java基础学习技术博客——for循环
- 【黑马程序员】Java基础基础学习技术博客——动态代理
- 【黑马程序员】Java基础学习博客——两种设计模式
- 黑马程序员——IOS学习之二:Objective-C基础语法和关键字——黑马 ios 技术博客
- 黑马程序员—6—Java基础:内部类学习笔记和心得体会
- 【黑马程序员】Java学习技术博客——银行业务调度系统
- 黑马程序员-Java基础学习-反射技术
- 黑马程序员——IOS学习四:基础控件Label,textfield,button等使用——黑马 ios 技术博客
- 【黑马程序员Java学习技术博客——交通灯管理
- 【黑马程序员】Java基础学习博客——数组
- 黑马程序员_java基础学习之内部类
- 黑马程序员-------学习日记Java基础 第一天
- 黑马程序员--Java基础学习第四天
- 黑马程序员-------学习日记Java基础 第五天
- 黑马程序员--Java基础学习第十一天
- jdk的配置和JVM内部原理 java 基础学习笔记 第一天