Java内部类-静态内部类的总结

Java内部类-静态内部类的总结

关于内部类其他系列(目前没更完)
静态内部类

内部类我推荐大概了解,因为真正的重点不是内部类,我写这些只是为了更好理解

前话:静态内部类其实就是成员内部类的两个儿子之一。就如全局里有静态和实例一样。成员内部类的儿子:静态内部类、实例内部类
为了更方便看懂,每个内部类都是单独单一出来的

这次我们来讲解:静态内部类

静态内部类创建对象格式

有两种命名时期的格式(如何用在下面的 访问成员内部类的访问格式 中介绍)

  1. 在其他类中创建成员内部类对象
外部类.内部类 XXX=new 外部类().new 内部类();  //创建格式一
外部类.内部类 XXX=new 外部类.内部类();//创建格式二
  1. 在外部类中创建成员内部类对象(与成员内部类一样)
class Wai{  //创建外部类
    class Nei{} //创建内部类
    void fan(){  //在外部类创建内部类对象,方便引用
        Nei XXX=new Nei();
        //格式:内部类 XXX=new 内部类();
    }
}

静态内部类的使用

  1. 静态内部类只能直接引用外部类的staic修饰的成员/方法(可以解决引用外部类的非静态成员)
class Wai{ 
    //静态内部类 不能 直接引用的(可以解决)
    final int yes1=10;
    int yes2=10;
    final void yes3(){}
    void yes4(){}
    
    //静态内部类 可以 直接引用的
    static final int yes1=10;
    static int yes2=10;
    static final void yes3(){}
    static void yes4(){}
    
    //创建静态内部类
    static class Nei{
        //解决:引用外部类的静态成员
        //1.创建外部类对象,通过对象引用(一言不合就创对象!)
        Wai wai1=new Wai();
        wai1.yes4();  //引用外部成员方法
        int nei1=wai1.yes1;  //引用外部成员变量
        注意:这里有些铁憨憨可能会问
        我可不可以 static int nei1=wai1.yes1;
        不可以!!!
        因为static一开始就有的东西你咋让他在后面的值附上去!
    }
}
  1. 静态内内部可以创建非static修饰的成员和方法
class Wai{ 
  //创建静态内部类
  static class Nei{//创建静态内部类
      //非静态成员、非静态方法(实例成员、实例方法)
      final int yes1=10;
      int yes2=10;
      final void yes3(){}
      void yes4(){}
      
      //静态成员、静态方法
      static final int yes1=10;
      static int yes2=10;
      static final void yes3(){}
      static void yes4(){}
  }
}

静态内部类的访问格式

1. 内部类访问外部类(格式与成员内部类一致,但是但是!这种直接引用只能引用静态成员)

通过:外部类 . 静态成员/静态方法

class Wai{
  //静态内部类 可以 直接引用的
  static final int yes1=10;
  static int yes2=10;
  static final void yes3(){}
  static void yes4(){}
  
  //创建静态内部类
  static class Nei{
      static int nei=Wai.yes1;  //访问格式
      int nei=Wai.yes3;  //访问格式
  }
}
2. 外部类访问内部类

和成员内部变量一样!(和成员内部变量一样!创建方法,再创建内部类对象)
这里水一下,为了更多和我一样 这么转牛角尖的,就每篇都详细一下

class Wai{  //创建外部类
   static class Nei{  //创静态建内部类
       int nei1=10;
       void nei2(){}
       private int nei3=30;
   }
   
   //建立引用内部类的方法
   void NeiDui(){
       //创建内部类对象
       Nei dui1=new Nei();
      int dui1_1= dui1.nei1;
      dui1.nei2();
      
      //可以访问内部类的私有成员和方法
      int dui1_2= dui1.nei3;
   }
}
3. 其他类访问内部类

1.创建静态内部类成员(必须保证内部类不是private类型)
但是一般开发来说内部类都是private类型,重点还是看通过:外部类方法引用吧

class Wai{
    static class Nei{  //创造静态内部类
        int nei1=10;
    }
}
class Qi{
    public static void main(String[] args){
        //其他类访问内部类创建对象一
        Wai.Nei jian1=new Wai().new Nei();
        int jianInt1=jian1.nei1; //对静态内部类成员进行应用
        
        //其他类访问内部类创建对象二
        Wai.Nei jian2=new Wai.Nei();
        int jianInt2=jian1.nei1; //对静态内部类成员进行应用
    }
}

2.创建外部类对象,外部类方法引用

class Wai{
   private static class Nei{  //创造静态内部类
       int nei1=10;
   }
   void NeiDui(){  //创建引用静态内部类的方法
       Nei dui1=new Nei();  //创造内部类对象
       int dui1_1= dui1.nei1;  //引用内部类成员
   }
}
class Qi{
   public static void main(String[] args){
       Wai jian1=new Wai();//创建外部类成员
       jian1.NeiDui(); //通过引用外部类方法进行引用
   }
}

如果有不对的,各位大佬们就指点指点
加油学习

发布了2 篇原创文章 · 获赞 1 · 访问量 122

猜你喜欢

转载自blog.csdn.net/Alopecia/article/details/104896535