Java小白对成员内部类的总结

Java内部类-成员内部类的总结

关于内部类其他系列(目前没更完)
静态内部类
内部类我推荐大概了解,因为真正的重点不是内部类,我写这些只是为了更好理解

说实话,Java内部类我是理解了很久(2-3天吧),因为经常搞混,又特无语
以下总结是为了更好的理解,首先来成员内部类吧

成员内部类创建对象格式

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

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

成员内部类的使用

  1. 不能再成员内部类中创建:static的方法和static成员
    总之含有static修饰符就不能创建!
class Wai{  //创建外部类
    class Nei{  //创建内部类
        static void no1(){} //在成员内部类中不能创建
        static int no2=10; //在成员内部类中不能创建
        static final void no1(){} //在成员内部类中不能创建
        static final int no2=10; //在成员内部类中不能创建
    } 
}
  1. 可以直接引用外部类的所有方法和变量
class Wai{  //创建外部类
     static void yes1(){}  //内部成员可以引用
     static int yes2=20;  //内部成员可以引用
     void yes3(){}  //内部成员可以引用
     static int yes4=40;  //内部成员可以引用
     class Nei{  //创建内部类
  } 
}

成员内部类的访问格式

1. 内部类访问外部类

通过:外部类类名+this+成员/变量(这样使用格式不会混乱) 外部类成员的静态成员,可以直接通过外部类类名引用

class Wai{  //创建外部类
   //外部类静态成员
     static void yes1(){}  
     static int yes2=20;  
     
     //外部类实例成员
     void yes3(){} 
     static int yes4=40;
     
     class Nei{  //创建内部类
         //引用外部类成员
         Wai.this.yes1();  
         int yin2=Wai.this.yes2; 
         Wai.this.yes3();
         int yin4=Wai.this.yes4;
         
         //外部类静态成员可以直接通过类名引用
         Wai.yes1();
         int yin5=Wai.yes2;
     } 
}
2. 外部类访问内部类

可以访问内部类的私有成员和方法(这点很无语,因为这点我也纳闷了很久) 步骤
1.通过在外部类中建立方法
2.在外部类方法中创建内部类对象

class Wai{  //创建外部类
   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)

class Wai{
    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=Wai.new Nei();
        int jianInt2=jian1.nei1; //对内部类成员进行应用
    }
}

2.创建外部类对象,通过外部类中访问内部类的方法进行访问

class Wai{
   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(); //通过引用外部类方法进行引用
   }
}

如果有不对的地方,麻烦各位大佬指出来
我这个小菜会努力学习的

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值