内部类

内部类_第1张图片
image.png

一般而言,在java中,一个模块中有若干个包, 以及有一个main函数的类,通过main函数来调用其它的包里面的方法,从而完成一个项目

下面这个程序有点 小问题 , 但是还是能够 完成编译的!

package bluelesson;

/**
 * Created by huyongjin on 2018/1/9.
 */
public class Outer {
    int nNum1;
    //成员内部类
public   class Inner{//此处不能设为private属性,否则,main函数那边不可以访问了!!
    public void show(){
        showB();
        System.out.println("Inner->show()");

    }


    }
    //静态内部类
    public static class staticInner{
        public void show(){
            new Outer().showB();
            System.out.println("staInner-->show()");

        }
        public static void showC(){


        }

    }
public void showB(){
    new Inner().show();
    new staticInner().show();//调用成员函数
    staticInner.showC();      //调用静态方法;

}

}

import bluelesson.Outer;

public class Main {
    public static void main(String[] args) {

        //1. 创建内部类对象的方法
        //1.1 创建外部类的对象
        Outer outer = new Outer();
        //1.2 通过外部类对象创建内部类对象
        Outer.Inner inner = outer.new Inner();
        //创建一个匿名外部内对象,再创建内部类对象
       //  Outer.Inner inner = new Outer().new Inner();
        inner.show();

        //2.创建静态内部类的方法
        Outer.staticInner staticInner = new Outer.staticInner();
        staticInner.show();;
    }


}

内部类的一些总结:
1.inner 类定义在Outer类的内部;相当于Outer类的一个成员变量,inner类可以使用任意访问控制符来修饰,比如public,protected,private;
2.Inner类中定义的show()方法可以直接访问Outer类中的数据;不受访问控制符的影响,如直接可以访问Outer类中的私有属性n;????
3.Inner类中定义的show()方法内如需要访问Outer类中的同名数据,需要加上外部类名.this.变量名

4.定义了成员内部类之后, 必须使用为外部类对象来创建内部类对象,而不能直接去new一个内部类对象,即:颞部类 对象名 = 外部类对象.new 内部类();

5.在外部类中不能直接访问内部类中的成员变量和成员方法.

你可能感兴趣的:(内部类)