带有修饰词的内部类

笔记
在类中类中,如果内类是被static修饰的类,这个类中可以有静态方法和非静态方法,那么外类的所有成员都默认带有final static 修饰词,
class Outer4{
 private int num = 10 ;      
 private static int num2 = 100;
 
 //成员静态的内部类
// 静态的内部类访问的外部类数据,外部累的相应成员必须是静态的
 public static class Inner4{
  //非静态方法
  public void show(){                 //在静态类中当方法为非静态的时候则可以访问静态.静态也只能访问静态
      // System.out.println(num);        //这里的num是非静态的所以报错.
   System.out.println(num2);
  }
  
  //静态方法
  public static void show2(){
//   System.out.println(num);       这里的num访问的是外部的num,由于此方法是静态的,所以他所访问的num也必须是静态的.
   System.out.println(num2);       这里的num2访问的是非静态的num2所以报错
  }
 }
}

总结:   在静态内类中不管方法是静态还是非静态都只能访问静态.
//测试类
如果内类是被private修饰的类,那么外类中的方法使用内类中的数据时要进行多态类的实例化.而内类使用外类中的数据时不需要实例化.
如果是本类中的private的话就直接可以用.
class Body{
 *   //写一个成员内部类
 *   private class Heart{
 *    public void operator(){
 *     System.out.println("心脏搭桥....");
 *    }
 *   }
 *
 *   public void work(){
 *    if(你是医生){
 *     Heart h = new Herat();   //跨类使用private数据时要进行实例化
 *     h.Operator();
 *    }
 *   }
 *  }
 
 
 
 
 当内类为静态类时,若要访问本类成员时,则需要用    外部类名.内部类名 对象名=new 外部类名.内部类名();
 当内类为非静态类时,若要访问本类成员时,则用     外部类名.内部类名 对象名=new 外部类名().new 内部类名();
 局部内部类中内类在局部位置,而且局部变量都为final 型,变为常量.
 class Outer6{
 private int num = 20 ;
 
 //外部类成员方法
 public void method(){
  //局部变量
//  int num2 = 20 ;//不正确的
  
  final int num2 = 20 ;//局部变量必须是常量
  //局部位置
  //局部内部类
  class Inner6{
   public void show(){
    System.out.println(num);//外部类成员变量
    System.out.println(num2);//访问这个数据
   }
  }
  
  //访问show()方法
  Inner6 i = new Inner6() ;
  i.show();
 }
}

public class InnerClassDemo5 {
 public static void main(String[] args) {
  //创建外部类对象
  Outer6 o = new Outer6() ;
  o.method();
 }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值