栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【我的Java知识储备——内部类(第一份博客,有优化意见的请评论)】

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【我的Java知识储备——内部类(第一份博客,有优化意见的请评论)】

1、内部类概述

内部类是在一个类中定义另一个类。举例:在一个类A的内部定义一个类B,类B就被称为内部类。

内部类的定义格式:

内部类格式:
        public class 类名(){
                修饰符 class 类名(){
                }
        }

内部类的访问特点:
内部类可以直接访问外部类的成员,包括私有成员变量;
外部类必须通过创建对象来访问内部类;

public class Outer {
    private int num=10;
   //内部类
    public class Inner {
         public void show(){
                System.out.println(num);
         }
    }
    //在方法内通过创建对象来访问内部类
    public void  method(){
        Inner i=new Inner();
        i.show();
    }
}
2、成员内部类

在类的成员位置:成员内部类
创建对象的格式:外部类名.内部类名 对象名=new 外部类名().new 内部类名();

public class Outer {
    private int num=11;
    

    //私有类不能被别的类调用
    private  class Inner {
        public void show() {
            System.out.println(num);
        }
    }
    //在外部类中可以调用私有内部类
    public void method(){
        Inner i=new Inner();
        i.show();
    }
}

测试类:

public class Test {
    public static void main(String[] args) {
        //创建内部类对象,并调用方法
//        Outer.Inner i= new Outer().new Inner();
//        i.show();

        Outer o=new Outer();
        o.method();
    }
}
3、局部内部类

在类的局部位置:局部内部类

  • 局部内部类是在方法中定义的类,所以外界是无法直接使用的,需在方法内创建对象并使用
  • 该类可以直接访问外部类成员,也可以访问方法内的局部变量
public class Outer {
    private int num=111;
    public void method(){
        int num1=22;
        //局部内部类,
        class Inner{
          public void show(){
              System.out.println(num);
              System.out.println(num1);
          }
        }
        Inner i=new Inner();
        i.show();
    }

3.1、匿名内部类

匿名内部类:
前提:
存在一个类或接口;这里的类可以是具体类也可以是抽象类
格式:

  •           new 类名或接口名(){
                    重写方法;
              };
    

本质是一个继承了该类或者实现了该接口的子类匿名对象。

public interface Interface {
    void show();
}

public class Outer {
    public void method(){
        
//        show();

        //多次调用
        Interface i=new Interface(){
            @Override
            public void show() {
                System.out.println("匿名内部类");
            }
        };
        i.show();
        i.show();
        i.show();
        i.show();
    }

}
public class Test {
    public static void main(String[] args) {
        Outer o=new Outer();
        o.method();
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/830136.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号