Java基础学习:面向对象17(内部类)

Java基础学习:面向对象17

  • N种内部类:

    • 成员内部类

    • 静态内部类

    • 局部内部类

    • 匿名内部类

 

  • 内部类:

    • 内部类就是在一个类的内部再定义一个类,比如A类中定义一个B类,那么B类相对于A类来说就称为内部类,而A类相对于B类来说就是外部类

       

  • 成员内部类:

    • 成员内部类可以获取外部类的私有属性;

    • 代码案例:


      /**
      * 成员内部类:
      *
      */
      public class Outer {

         private int id=3;

         public void out(){
             System.out.println("这是外部类的方法");
        }

         public class Inner{
             public void in(){
                 System.out.println("这是内部类的方法");
            }

             //获得外部类的私有属性
             public void getId(){
                 System.out.println(id);
            }
        }

      }


       

  • 静态内部类:

    • 静态内部类:不能访问外部类中非静态方法和非静态变量;

    • 代码案例:


      /**
      * 静态内部类:
      *
      */
      public class Outer {

         private int id=3;

         public void out(){
             System.out.println("这是外部类的方法");
        }

         public static class Inner{
             public void in(){
                 System.out.println("这是内部类的方法");
            }

        }

      }

 

  • 局部内部类

    • 不建议使用,仅作为分析!

    • 代码案例:

      public class Outer {

         //局部内部类
         public void method(){
             class Inner{
                 public void in(){
                     
                }
            }
        }

      }

       

  • 匿名内部类:

    • 匿名内部类:没有名字初始化类,不用将实例保存到变量中;

    • 代码案例:


      /**
      * 匿名内部类
      */
      public class Test {
         public static void main(String[] args) {

             //没有名字初始化类,不用将实例保存到变量中
             new Apple().eat();

             UserService userService=new UserService(){
                 @Override
                 public void helo() {
                     System.out.println("22");
                }
            };
        }

      }


      //类
      class Apple{
         public void eat(){
             System.out.println("1");
        }
      }

      //接口
      interface UserService{
         void helo();
      }

       

posted @   gzs1024  阅读(29)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示