java——内部类

什么是内部类

定义:将一个类定义到另一个类的内部,那么这个类,就叫做内部类。按照定义位置不同分为成员内部类局部内部类

成员内部类

特点
成员内部类访问外部类:直接访问外部类成员,包括私有。
外部类访问内部类:创建内部类对象。
测试类访问内部类:创建内部类对象。
格式: 外部类名.内部类名 对象名 = 外部类对象.内部类对象;
Outer.Inner inner=new Outer().new Inner();
成员内部类的修饰符
1. 内部类被private 修饰符修饰后,测试类不能直接访问。得在外部的成员方法中创建内部类对象,调用内部类的方法,最后测试类再创建外部类的对象调用外部的成员方法,间接访问。
2. 内部类被static修饰后创建内部类对象的语法要改变:
外部类名.内部类名 对象名= new 外部类类名.内部对象;
Outer.Inner inner=new Outer.Inner();

代码示例
//未被私有化的内部类可以直接new
class demo {
  public static void main(String[] args) {
      Outer.Inter inter = new Outer.Inter(); //内部类未被私有,可以直接new出成员内部类
      System.out..println(inter.num);
      inter.InterShow();
  }
}

class Outer{
  class Inter{
      int num = 10;
      public void InterShow(){
          System.out.println("成员内部类的show方法");
      }
  }
  public void OuterShow(){
  }
}
class demo {
  public static void main(String[] args) {
      Outer outer = new Outer();//成员内部类私有化了,只能在外部类中调用重写方法后重新使用它
      outer.OuterShow();
  }
}

class Outer{
  private class Inter{
      int num = 10;
      public void InterShow(){
          System.out.println("成员内部类的show方法");
      }
  }
  public void OuterShow(){
      Inter inter = new Inter(); //外部类中new内部类其功能属性。
      System.out.println(inter.num);
      inter.InterShow();
  }
}
局部内部类

特点

  1. 局部内部类访问外部类:直接访问外部类成员,包括私有。
  2. 局部内部类访问外部类的局部变量必须用final修饰。
  3. 测试类中不能直接创建局部内部类的对象。
    代码示例
class demo {
 public static void main(String[] args) {
     Outer outer = new Outer();
     outer.OuterShow(1);
 }
}

class Outer{
 int num =10;
 private int a = 100;
 public void OuterShow(final int a){
     //定义局部内部类
     //内部类可以直接调用外部类的成员变量包括私有
     class Inter{
         int c = 1;
         public void interShow(){
             System.out.println(num); //局部内部类访问外部成员变量的时候必须加上final修饰jdk1.8后自动加入
             System.out.println(a);
             System.out.println(c);
         }

     }
     Inter inter = new Inter();  //使用局部内部类
     inter.interShow();          //调用局部内部类方法
     System.out.println(inter.c);//打印局部内部类常量
 }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值