zoukankan      html  css  js  c++  java
  • java内部类基础知识

      一、java内部类具体分四大类

            1、成员内部类

            2、静态内部类

            3、局部内部类

            4、匿名内部类

      1、成员内部类             :作为类的成员,存在于类中                                               

     1 //成员内部类可以调用外部类的所有成员,但只有在创建了外部类的对象后,才能调用外部的成员。
     2  public class Outter1 {
     3     static int a=1;
     4     int b=0;
     5     
     6     public static void test1(){
     7         System.out.println("外部类的静态方法");
     8     }
     9     
    10     public void test2(){
    11             System.out.println("外部类的非静态方法");
    12     }
    13 
    14     //
    15     class Inner{
    16         public void test(){
    17             System.out.println("在成员内部类的方法中");
    18         //调用外部类的静态方法
    19             test1();
    20             
    21         //调用外部类的非静态方法
    22             test2();
    23             System.out.println(a+b);//访问外部类的静态成员变量和非静态成员变量
    24         }
    25     }
    26     
    27     
    28     
    29     public static void main(String[] args) {
    30         //Inner in=new Inner();成员内部类的对象不能直接创建,会报错
    31         Outter1 out=new Outter1();//先创建外部类的对象
    32         Inner in=out.new Inner();//注意:!!成员内部类的对象必须通过外部类的对象创建
    33     }
    34 }

      2、静态内部类     :作为静态成员存在类中

    //静态内部类虽然是外部类的成员,但是在未创建外部类的对象的情况下,可以直接创建静态内部类的对象。静态内部类可以引用外部类的静态成员变量和静态方法,但不能引用外部类的普通成员。
     
     //静态内部类的测试程序
     public class Outter {
         static int a=1;
         int b=5;
         
         static void test(){
             System.out.println("外部类的静态方法");
         }
         
         static class Inner{
             public void test2(){
                 System.out.println("a的值为"+a);;//直接引用外部类的静态成员变量
                 test();//直接引用外部类的静态方法
                 //b++;        静态内部类中不允许访问外部非static属性
                 System.out.println("静态内部类的方法");
             }
         }
         
         static class Inner2{
             public static void test2(){
                 System.out.println("如果内部类中的方法为static方法,那么内部类也必须为静态的");
             }
         }
    
    
         
         public static void main(String[] args) {
             Inner in=new Inner();//静态内部类的对象可以直接创建,无需先创建外部类的对象
             in.test2();
         }
     }

    3、局部内部类   :存在某个方法的内部,作用域,方法内

    //局部内部类只能在方法内部中使用,一旦方法执行完毕,局部内部类就会从内存中删除。
      //必须注意:如果局部内部类中要使用他所在方法中的局部变量,那么就需要将这个局部变量定义为final的。
    
    public class Outter2 {
        int a=10;
        public void test(){
            final int c=5;
    
              System.out.println("在外部类的方法中");
    
            class Inner{
                int b=20;
                void test1(){
                    System.out.println("局部内部类的方法中");
    
                    System.out.println(c);//注意:如果局部内部类中要使用他所在方法中的局部变量,那么就需要将这个局部变量定义为final的。
                }
            }
            Inner inner=new Inner();
            inner.test1();
        }
    
        public static void main(String[] args) {
            Outter2 outter=new Outter2();
            outter.test();
        }
    }

    4、匿名内部类 : 匿名内部类的定义与对象的创建合并在一起,匿名内部类一般通过如下形式定义,并且在定义的同时进行对象的实例化。

      

      //new 类或者接口的名字(){
    
      //匿名内部类的主体,大括号中是匿名内部类的主体,这个主体就是类或者接口的实现,如果是类,那么匿名内部类是该类的子类,如果是接口,匿名内部类需要完成接口的实现。
    
    //}
    
    class Person{
        public void show(Message message){
            message.show();
        }
    }
    
    class Message{
        public void show(){
            System.out.println("在Message类中");
        }
    }
    
    public class Outter3 {
        public static void main(String[] args) {
            Person person=new Person();
                
            person.show(new Message(){  //这里创建了匿名内部类
                public void show(){
                    System.out.println("在匿名内部类中");
                }
            });
        }
    }
    内容
  • 相关阅读:
    loadrunner下检查点乱码情况处理
    Linux下安装loadrunner步骤及遇到的问题
    当你决定不再在乎的时候,生活就好起来了
    受难语录
    LoadRunner--内存指标介绍
    Microsoft Visual Studio Web 创作组件安装失败的解决方法
    (六)微服务分布式云架构spring cloud
    (五)微服务分布式云架构
    (四)微服务分布式云架构
    (三)微服务分布式云架构
  • 原文地址:https://www.cnblogs.com/eyjdbk/p/10980741.html
Copyright © 2011-2022 走看看