Java内部类详解(Java基础知识)

前言:

如果在类中定义一个类,那么就把在类中定义的类称为内部类,例如发动机安装在汽车内部,如果把汽车定义成汽车类,发动机定义成发动机类,那么发动机类就是一个内部类

一、为何要使用内部类

  • 内部类提供了更良好的封装性,只有外部类才能访问内部类的
  • 内部类不受外部类影响独立继承接口(无论外部类是否实现某个接口)
  • 外部类不能直接访问内部类属性或者方法,但内部类可以访问外部类的属性或者方法(包括private)方法

内部类示例:

class Text1{            //外部类
    public void meth1(){            //外部成员方法
        System.out.println("外部类成员方法");
    }
    class Text2{        //内部类
        public void nei_meth(){
            System.out.println("内部类成员方法");
        }
    }
}

 二、外部类与内部类的联系

外部类不能直接调用内部类的属性或者方法,如下所示:

public class Waibulei1 {            //外部类
    int a = 10;             //全局变量
    public void method(){
        System.out.println("外部类方法");
    }
    public static void main(String[] args) {
       // System.out.println(b);              //外部类不能直接访问内部类属性或者方法,会报错
    }
    public class Neibulei{          //创建内部类
        int b = 10;
        public void nei_method(){
            System.out.println(a);              //直接访问外部类成员变量
        }
    }
}

 外部类中有私有化的属性或者方法(private)时,内部类方法中可以直接调用,示例:

class Text3{            //外部类
    private String name;
    private void p_meth(){
        System.out.println("私有方法");
    }

    public static void main(String[] args) {
        Text3 tx3 = new Text3();            //创建外部类对象
        Text3.Text4 nei_dui = tx3.new Text4();      //创建内部类对象
        nei_dui.n_method();     //调用内部类方法
    }
    class Text4{
        public void n_method(){
            System.out.println(name);       //直接访问外部私有变量
            p_meth();           //直接访问外部私有方法
        }
    }
}

如上述所示,内部类可以在内部类方法中直接调用外部类的私有属性或方法,上述代码运行结果如下:

null
私有方法

 注意:内部类对象依赖于外部类对象,如下面这两行代码:

Text3 tx3 = new Text3();            //创建外部类对象
Text3.Text4 nei_dui = tx3.new Text4();      //创建内部类对象

除非已经存在一个外部类对象,否则类中不会出现内部类对象。

 三、如何创建内部类对象

内部类对象既可以在外部类中创建,也可以在内部类中创建 

第一种: 外部类  外部类对象名 = new 外部类();

              外部类.内部类  对象名 = 外部类对象名.new 内部类();

第二种:内部类 对象名 = new 外部类().new 内部类();

四、内部类的分类 

内部类所有成员可以分为:成员内部类,局部内部类,匿名内部类,静态内部类。 

 如需了解内部类的分类,请前往下一篇文章,内部类的分类。

猜你喜欢

转载自blog.csdn.net/qq_62414755/article/details/124431118