Java的内部类

Java的内部类

内部类:在一个类的内部,再定义一个类。

eg:A类中定义一个B类,B类就是A类的内部类,A类就是B类的外部类

分为:

  1. 成员内部类

  2. 静态内部类

  3. 局部内部类

  4. 匿名内部类

成员内部类

在类的内部写一个类,这个内部类可以访问其对应的外部类的私有和公有属性和方法

创建内部类对象语法:

step1: 外部类名 obj1 = new 外部类名();

step2: 外部类名.内部类名 obj2 = obj1.new 内部类名();

 Java的内部类_第1张图片

1、main():

package com.WZ.Demo.Application;
public class Application {
   public static void main(String[] args) {
       //创建内部类对象
       //step1 外部类名 obj1 = new 外部类名();
       Outer obj1 = new Outer();
       //step2 外部类名.内部类名 obj2 = obj1.new 内部类名();
       Outer.Inner obj2 = obj1.new Inner();
       obj1.out();
       obj2.in();
       obj2.getID();
  }
}

2、Outer类

package com.WZ.Demo.Application;
public class Outer {
   private int id = 3;
   public void out(){
       System.out.println("这个是外部类的方法");
  }
   public class Inner{
       public void in(){
           System.out.println("这个是内部类的方法");
      }
       //测试是否能获得外部类的私有属性
       public void getID(){
           System.out.println("外部类的私有属性: "+id);
      }
  }
}

静态内部类

在刚刚成员内部类的基础上,public class Inner{ }上,加static关键字修饰。

与成员内部类的区别为:

  1. 内部类无法使用外部类的非静态成员。原因为:static加载时就有了,而外部类的非静态变量此时还不存在。

  2. 内部类依然可以使用外部类的静态成员。

除上述区别外,静态内部类与成员内部类相同。

局部内部类

外部类的方法中,写的类,叫局部内部类。

package com.WZ.Demo.Application;
public class Outer {
  public void method{
      class Inner{
           public void in(){}
      }
  }
}

匿名内部类

实例化对象的时候,不把名字赋值给变量,而是直接使用。语法为:new 类名.方法名();

1、main()

package com.WZ.Demo.Application;
public class Application {
   public static void main(String[] args) {
       new Person().show();  //匿名内部类
  }
}

2、Person类

package com.WZ.Demo.Application;
public class Person {
   public void show() {
       System.out.println("匿名内部类");
  }
}

 

 

 

 

 

 

 

 

 

 

 

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