内部类

来源:互联网 发布:淘宝购物信用怎么提高 编辑:程序博客网 时间:2024/05/22 08:35


内部类

          定义:

                  在一个类中定义另外一个类(内部类可以访问外部类的成员,包括私有!

          分类:

                  成员内部类:外部成员位置

                  局部内部类:外部局部位置

           访问:

                  外部类名 .内部类名      对象名 =    外部类对象.内部类对象

                 Outer.Inner     oi  =  new  outer().new  inner()

           代码:

class Outer3{
private int num =10 ;

//成为位置
//定义一个成员内部类
class Inner3{
public void show(){
System.out.println(num);
}
}


public void method(){

}
}


//测试类
public class InnerClassDemo3 {
public static void main(String[] args) {
//内部类访问其中的成员
//创建对象
// Inner3 i = new Inner3();
// i.show();
// 格式:外部类名.内部类名 对象名 = 外部对象. 内部类对象;
// Outer3.Inner3 oi = new Outer3().Inner3();//错误写法
Outer3.Inner3 oi = new Outer3().new Inner3();
oi.show();
}
}

       成员内部类:

                    修饰符

                              可有private:保护数据的安全性(间接访问)
                              可以是静态static:静态只能访问静态
                              静态访问(可以直接用类名调用):
                                      外部类名.内部类名.对象名
                                       Outer.Inner   oi = new.Outer.Inner();
                                      或 Outer.Inner.show();

                      代码:

class Outer4{
private int num = 10 ;
private static int num2 = 100;

//成员静态的内部类
// 静态的内部类访问的外部类数据,外部累的成员必须是静态的
public static class Inner4{
//非静态方法
public void show(){
// System.out.println(num);
System.out.println(num2);
}

//静态方法
public static void show2(){
// System.out.println(num);
System.out.println(num2);
}
}
}
//测试类
public class InnerClassDemo4 {
@SuppressWarnings("static-access")
public static void main(String[] args) {
//成员静态内部类访问自己成员的方式:

//此时静态成员内部类不能用以下的方式访问本类中的成员
// Outer4.Inner4 oi = new Outer4().new Inner4();

//如何访问自己内部成员
//成员静态内部类访问内部类成员的访问格式:
//外部类名.内部类名 对象名 = new 外部类名.内部类名();
Outer4.Inner4 oi = new Outer4.Inner4();
oi.show();
oi.show2();

//show2()是成员内部类的一个静态方法,还有另一中方式访问:
Outer4.Inner4.show2();
}
}

       局部内部类:

                        1.可以直接访问外部类的数据
                        2. 局部内部类访问局部变量,该变量必须是常量
                        3.在内部类成员方法创建局部内部类对象,直接访问该方法去间接输出内部类中的方法

                 代码:

class Outer6{
private int num = 20 ;

//外部类成员方法
public void method(){
//局部变量
// int num2 = 20 ;//不正确的

final int num2 = 20 ;//局部变量必须是常量
//局部位置
//局部内部类
class Inner6{
public void show(){
System.out.println(num);//外部类成员变量
System.out.println(num2);//访问这个数据
}
}

//访问show()方法
Inner6 i = new Inner6() ;
i.show();
}
}

public class InnerClassDemo5 {
public static void main(String[] args) {
//创建外部类对象
Outer6 o = new Outer6() ;
o.method();
}
}
原创粉丝点击