您的位置:首页 > 职场人生

【黑马程序员】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,匿名内部类不能定义抽象方法,因为匿名内部类在创建时就返回了一个实例。

 *

 *

 *

 *

 *

 *

 *

 *

 *

 *

 */

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: