含有静态的内部类相关知识

/*
 *成员内部类有关的修饰符
 *  可有有private :目的是保护数据的安全性
 *  
 *  成员内部类:可以是一个静态的内部类:
 *    静态的内部类访问的外部类数据,必须是静态的!
 *  案例:有一个人(人有身体,身体内有心脏)
 *  class Body{
 *   //写一个成员内部类
 *   private class Heart{
 *    public void operator(){
 *     System.out.println("心脏搭桥....");
 *    }
 *   }
 *
 *   public void work(){
 *    if(你是医生){
 *     Heart h = new Herat();
 *     h.Operator();
 *    }
 *   }
 *  }
 *   
 *成员内部类要访问成员:
 *  外部类名.内部类名 对象名 = 外部累对象.内部类对象;
 *
 *  Body.Herat bh = new Body().new Heart();//错误的
 *
 *  成员内部类被private修饰,那么就不能直接创建对象.
 *  Body b = new Body();
 *  b.work();  
 *
 *
 * */
class Outer4{
 private int num = 10 ;
 private static int num2 = 100;
 
 //成员静态的内部类
// 静态的内部类访问的外部类数据,外部累的成员必须是静态的
 public static class Inner4{
  //非静态方法
  public void show(){
//   System.out.println(num);
   System.out.println(num2);
  }
  
  //静态方法
  public static void show2(){
//   System.out.println(num);
   System.out.println(num2);
  }
 }
}
//测试类
public class InnerClassDemo4 {
 @SuppressWarnings("static-access")
 public static void main(String[] args) {
  //成员静态内部类访问自己成员的方式:
  
  //此时静态成员内部类不能用以下的方式访问本类中的成员
//  Outer4.Inner4 oi = new Outer4().new Inner4();
  
  //如何访问自己内部成员
  //成员静态内部类访问内部类成员的访问格式:
  //外部类名.内部类名 对象名 = new 外部类名.内部类名();
  Outer4.Inner4 oi = new Outer4.Inner4();
  oi.show();
  oi.show2();
  
  //show2()是成员内部类的一个静态方法,还有另一中方式访问:
  Outer4.Inner4.show2();
 }
}

你可能感兴趣的:(含有静态的内部类相关知识)