Java——内部类、访问权限

本文详细解析了Java内部类的五种类型:成员内部类、私有成员内部类、静态成员内部类、局部内部类及匿名内部类。阐述了各自的成员特征、访问规则及应用场景,帮助读者掌握内部类的全面知识。

内部类

语法:

class 类名1 {//外部类
  class 类名2 {//内部类,由于定义在类中方法外,属于外部类成员,所以又称为成员内部类 
  }
  public void 方法名(){
    class 类名3{内部类,由于定义在方法中,所以又称为局部内部类
    }
  }
}

1.成员内部类

成员:

​ 属性:非静态属性,基本数据类型以及String静态常量

​ 方法:非静态方法

访问:

​ 内部类访问外部类:直接访问

​ 外部类访问内部类:实例化内部类,通过内部类对象访问其对象

​ 外部类以外类访问内部类:实例化外部类,通过外部类对象实例化内部类,通过内部类对象访问成员

//在外部类以外的类中
Outer outer = new Outer();//实例化外部类
Outer,Inner inner = outer.new Inner();//通过外部类对象实例化内部类
s.o.p(inner.成员名);//内部类对象访问成员

2.私有成员内部类

成员:与成员内部类一致

访问:

​ 内访外、外访内与成员内部类一致

​ 外部类以外的类无法访问私有成员内部类

3.静态成员内部类

概念:使用static修饰符的内部类,又称之为嵌套内部类

成员:

​ 属性:静态、非静态属性,静态常量

​ 方法:静态/非静态方法

访问:

​ 内部类访问外部类:实例化外部类,通过 对象.成员名 进行访问

​ 外部类访问内部类:实例化内部类,通过 对象.成员名 进行访问

​ 外部类之外类访问内部类:实例化内部类(Outer.Inner Inner = new Outer.Inner();),通过 对象.成员名 进行访问

4.局部内部类

概念:定义在方法中的内部类

成员:

​ 属性:非静态属性,基本数据类型的静态常量和String类型静态常量

​ 方法:非静态方法

访问:

​ 局部内部类访问外部类:直接访问

​ 外部类访问局部内部类:实例化内部类,通过 对象.成员名 进行访问

​ 外部类之外类不能访问局部内部类

5.匿名(局部)内部类

概念:该局部内部类没有类名

应用:

  1. 局部内部类继承父类

    //父类类型引用指向子类对象
    Father f = new Father()/*类名*/{
      @Override
      public void method(){//(匿名)子类重写父类方法
        System.out.println("son method...");//s.o.p输出
      }
    };
    fu.method();
    

    如果需要使用匿名内部类中的特有方法

    //使用匿名对象,但该匿名内部类的成员只能使用一次
    System.out.println(new Fu(){
      int x = 250;
    }/*匿名对象*/.x);
    
  2. 局部内部类实现接口

    //接口类型引用指向实现类对象
    Inter inter = new Inter(){
      @Override
      public void method(){
        System.out.println("impl method...");//s.o.p输出
      }
    }

    如果需要使用实现类中特有成员,和上面的继承一样

访问修饰符

java中访问修饰符:public、protected、默认、private

作用:用于空间类及其成员,可以被那个访问,以及不被那个类访问,达到权限管理的效果

本类本包不同包但具有继承关系不同包
privatetruefalsefalsefalse
默认truetruefalsefalse
protectedtruetruetruefalse
publictruetruetruetrue

访问权限大小:public>protected>默认>private

安全性大小:private>默认>protected>public

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值