"景先生毕设|www.jxszl.com

什么是java内部类(inner class)

2023-09-12 15:40编辑: www.jxszl.com景先生毕设

什么是java内部类(inner class)

定义:在其他类(outer class)中的类被称作内部类。内部类可以有访问修饰服,甚至可以被标记为 abstract 或 final。 内部类与外部类实例有特殊的关系,这种关系允许内部类访问外部类的成员,也包括私有成员。

  I  inner class:成员内部类是最普通的内部类,它的定义为位于另一个类的内部,形如下面的形式:
class InnerClass {
    double radius = 0;
     
    public InnerClass(double radius) {
        this.radius = radius;
    }
     
    class Draw {     //内部类
        public void drawSahpe() {
            System.out.println("drawshape");
        }
    }
}

II  局部内部类:是定义在一个方法或者一个作用域里面的类,它和成员内部类的区别在于局部内部类的访问仅限于方法内或者该作用域内。
class People{
    public People() {
         
    }
}
 
class Man{
    public Man(){
         
    }
     
    public People getWoman(){
        class Woman extends People{   //局部内部类
            int age =0;
        }
        return new Woman();
    }
}
注意,局部内部类就像是方法里面的一个局部变量一样,是不能有public、protected、private以及static修饰符的。

III  匿名内部类:访问外部成员变量时,成员变量前应加final关键字。

[java] view plain copy

    final int k = 6;  
    ((Button)findViewById(R.id.button2)).setOnClickListener(new OnClickListener() {  
        @Override  
        public void onClick(View v) {  
            // TODO Auto-generated method stub  
            System.out.println(k);  
        }  
    });  
    
 IV   静态嵌套类
静态嵌套类使用外围类名来访问:

OuterClass.StaticNestedClass

实例化一个静态嵌套类的对象就要使用这种语法:

OuterClass.StaticNestedClass nestedObject = new OuterClass.StaticNestedClass();

内部类对象的存在需要依靠一个外部类的对象. 看看下面的类:

class OuterClass {
    ...
    class InnerClass {
        ...
    }
}

内部类对象只有当外部类对象存在时才有效, 并且可以直接访问他的包裹对象(外部类对象)的方法以及成员.

因此, 要实例化一个内部类对象, 必须先实例化外部类对象. 然后用这种语法来创建内部类对象:

OuterClass.InnerClass innerObject = outerObject.new InnerClass();
JAVA/260.html">http://www.itemperor.com/a/JAVA/260.html


原文链接:http://www.jxszl.com/biancheng/JAVA/446612.html