Java——内部类

不止Java

共 3193字,需浏览 7分钟

 · 2021-07-17

点击上方蓝字
关注我吧

目录

  • 成员内部类
  • 局部内部类

在一个类中定义一个类。前者称为外部类,后者即为内部类。
内部类的访问特点:
内部类可以直接访问外部类的成员,包括私有;
外部类要访问内部类的成员,必须要创建对象。
内部类定义格式:
public class 类名{
修饰符 class 类名{
}
}

public class Outer {
   private int n = 20;
   
   public class Inner{

       public void show (){
       System.out.println(n);
       }
   }

   public void method() {
       //创建对象访问内部类成员
       Inner i = new Inner();
       i.show();
   }}


成员内部类

在类的成员位置。
public class Outer {
   private int n = 20;//    public class Inner{////        public void show (){//        System.out.println(n);//        }//    }

   private class Inner {

       public void show() {
           System.out.println(n);
       }
   }

   public void method() {
       //创建对象访问内部类成员
       Inner i = new Inner();
       i.show();
   }}
public class InnerDemo {
   public static void main(String[] args) {
       //创建内部类对象,并调用方法
       //格式:外部类名.内部类名 对象名 = 外部类对象.内部类对象//       Outer.Inner oi = new Outer().new Inner();//       oi.show();
       Outer o = new Outer();
       o.method();
   }}


局部内部类

在类的局部位置。
在方法中定义的类,外界无法直接使用,需要在方法内部创建对象并使用。
该类可以直接访问外部类的成员,也可以访问方法内的局部变量。
public class Outer {
   private int n = 20;


   public void method() {

       class Inner {
           public void show() {
               System.out.println(n);
           }
       }

       Inner i = new Inner();
       i.show();
   }}
/*
测试类
*/
public class OuterDemo {
   public static void main(String[] args) {
       Outer o = new Outer();
       o.method();
   }}
匿名内部类
前提:存在一个类或接口,类可是具体类或抽象类。
本质:一个继承了该类或实现该接口的子类匿名对象。
格式:
new 类名或接口名(){
重写方法;
};
public class Outer {

   public void method() {

//本质为对象
       Inter i = new Inter() {
           @Override
           public void show() {
               System.out.println("匿名内部类");
           }
       };
       i.show();
   }}
public interface Inter {
   void show();}
/*
测试类
*/
public class OuterDemo {
   public static void main(String[] args) {
       Outer o = new Outer();
       o.method();
   }}




往期推荐

形参和返回值
Java——多态
实现小型的学生信息管理系统





浏览 17
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报