Java面向对象编程
Java的核心就是OOP(面向对象)
6、初识内部类
内部类的定义
- 内部类就是在一个类的内部再定义一个类,比如A类中定义了一个B类,那么B类相对于A类来说就称为内部类,而A类对于B类来说就是外部类了。
内部类的分类
-
成员内部类
- 在创建的类的内部,称为成员内部类
- 成员内部类实例化通过外部类new
- 成员内部类可以获得外部类的私有属性
- 以下来进行简单的操作:
package com.oop.demo13; //外部类Outer public class Outer { //私有属性private private int Id = 15; public void say(){ System.out.println("外部类的方法"); } //成员内部类Inner public class Inner{ public void in(){ System.out.println("内部类的方法"); } //内部类可以获取外部类的私有属性; public void getID(){ System.out.println(Id); } } }
- 然后再main方法里面输出
package com.oop.demo13; public class Application { public static void main(String[] args) { Outer outer = new Outer(); //通过这个外部类来实例化内部类 Outer.Inner inner = outer.new Inner(); //通过内部类输出外部类的私有属性 inner.getID(); } }
-
静态内部类
- 就是加了static的内部类
- 暂时不做过多详解
//外部类Outer public class Outer { //私有属性private private int Id = 15; public void say(){ System.out.println("外部类的方法"); } //静态成员内部类Inner public static class Inner{ public void in(){ System.out.println("内部类的方法"); } } }
-
局部内部类
- 在方法里面的类
- 暂时不做过多详解
package com.oop.demo13; //外部类Outer public class Outer { //方法里面创建一个类 public void eat(){ //局部内部类 class Inner{ public void in(){ } } } }
-
匿名内部类
- 没有名字初始化类,不用将实例保存到变量中
package com.oop.demo13; public class Test { public static void main(String[] args) { //没有名字初始化类,不用将实例保存到变量中 //匿名内部类 new Apple().eat(); } } class Apple{ public void eat(){ System.out.println("咬了一口"); } }