JAVA基础--内部类

来源:互联网 发布:python模块大全下载 编辑:程序博客网 时间:2024/06/13 05:22

内部类:

 * 成员内部类

            位置:类中、方法外。 类似与成员变量

 * 成员内部类对象的创建:

 *             通过   外部类对象.new 内部类();

 * 请问成员内部类的生命周期:

 *   随着外部类对象的创建而被加载。

 * 在外部类中创建内部类对象。

 *  【在外部类中去创建内部类对象,是需要通过外部类对象的、】

 * 在静态方法中,我们需要先创建外部类对象。

 *  Test1t =new Test1();

 * Test1.Inner  i = t.new Inner();

 *  在非静态方法中

 *  Inneri =new Inner()  【在这里实际上省略了this】

 * 在内部类中创建外部类对象。

 * 没有任何特殊之处。

 *

 *我们都知道每一个类都会在编译的时候产生一个class文件。

 *请问内部类是否会有class文件?

 * 会的。会生成如下文件名。

 * Test1$Inner.class

 * 

 *  请问外部类的私有成员,在成员内部类中是否可以调用到?  可以

 *   请问成员内部类的私有成员,在外部类中是否可以调用到?     可以

 * 权限修饰修饰符:四个都可以使用

 * 成员内部类中是否可以出现static修饰的静态成员。

 * 不可以、我们可以从加载时间去考虑。

 

 * 静态内部类的

            位置:在类中,方法外。而且用static修饰。

 * 类似与静态成员

 * 1、没有特殊之处。

 *

 * 2、静态内部类是否也会产生class文件?

 * 会。

 * 3、私有在内部类和外部类之间是否有效?

 * 内部类私有成员,可以被外部类使用。

 * 反之亦然。

 * 4、静态内部类是否可以拥有非静态成员?

 * 可以。

 * 5、在静态内部类中不可以使用this吗?

 * 在静态内部类中的非静态方法中可以使用this。

 * 6、区别内部类和外部类成员变量重名?

 * 重名时,在内部类中默认调用自己的成员变量。

 * 我们可以使用外部类名.成员变量的方式去调用外部类的静态成员变量。

* 局部内部类:

     位置:类中、在方法中。

 * 1、局部内部类创建对象该怎么创建?

 * 【局部内部类的生命周期有多长?】

 * 局部内部类的生命周期和局部变量相似、

 * 只在定义它的方法内有效。

 * 当所属方法被调用的时候,里面的局部内部类也会相应的被加载。

 *

 * 2、局部内部类中可以拥有静态成员吗?

 * 不能

 * 3、内部类所属方法中的局部变量,局部内部类能不能调用到?

 * 不能调用到、

 *final修饰的局部变量可以被局部内部类调用到。

 *final修饰的变量是常量。存储在常量池中。

* 匿名内部类.     

 位置:类中,方法外。

多用于接口和抽象类,当然,普通类也是可以实现匿名内部类的。

public class test {// 成员内部类class Inner {int age;public void methodInner() {System.out.println("成员内部类的方法");}}// 静态内部类static class Inner2 {int age;public void methodInner() {System.out.println("静态内部类的方法");}}public void run(){//局部内部类class Inner3{int age;public void methodInner(){System.out.println("局部内部类的方法");}}}public static void main(String[] args) {  //匿名内部类A a = new A() {@Overridepublic void eat() {// TODO Auto-generated method stub}};}}interface A{void eat();}


原创粉丝点击