美文网首页
Java篇-内部类的使用

Java篇-内部类的使用

作者: TianTianBaby223 | 来源:发表于2018-04-27 15:06 被阅读10次

    内部类相当于我们可以在类的内部再定义类.
    外面的类->外部类.
    里面定义的类->内部类

    一 : 内部类分类

    • 成员内部类

    声明在类内部且方法外的
    ① 可以有修饰符,可以调用外部类的属性方法

    class Person{
        String name = "BOSS";
        int age;
        //成员内部类(非静态)
        class Bird{
    
            public void info() {
                      //调用外部类方法
                show();
                    // 调用外部类的属性
                    System.out.println(Person.this.name);
    
            }
        }
    
        public void show() {
            System.out.println("我是Show");
            
        }
    }
    
    

    ②具有类的特点,可以被abstract 修饰,还可以其内部定义属性,方法构造器.

    class Person{
        String name = "BOSS";
        int age;
        //成员内部类(非静态)
        class Bird{
                    //内部类属性  
                    String name = "king";
            int age;
                  //内部类定义方法
            public void info() {
                      //调用外部类方法
                show();
                    // 调用外部类的属性
                    System.out.println(Person.this.name);
            }
                  //定义构造器
                  public Bird() {
            }
        }
    
        public void show() {
            System.out.println("我是Show");
            
        }
    }
    

    ③静态内部类 用static 修饰

    class Person{
        String name = "BOSS";
        int age;
        //成员内部类(静态内部类)
        static class Dog {
            
            
        }
        public void show() {
            System.out.println("我是Show");
            
        }   
    }
    
    • 内部类调用

    非静态

    //创建非静态的内部类对象,必须先创建外部类的对象,通过外部类的对象调用内部类的构造器.
            Person p = new Person();
            Person.Bird b = p.new Bird();
            b.info();
    

    静态

            //创建静态内部类的对象,可以直接通过外部类调用静态内部类的构造器
    //      Person.Dog d = new Person.Dog();
    
    • 局部内部类

    声明在类的方法里

    class OuterClass{
        //局部内部类,如下的使用方式较少
    
        public static void method1() {
            class InnerClass{
                public void show() {
                    System.out.println("你好啊我是内部类的傻B方法");
                }   
            }
    
            InnerClass inner = new InnerClass();
            inner.show();
        }
    }
    

    二 : 内部类的使用

    常常使用一个方法,使其返回值为某个类或接口的对象,
    而这个类或接口在方法内部创建
    接口

    interface CompareObject{
        int compareTo(Object o);
    
    }
    

    使用一

    class OuterClass{
      public Comparable getcomparable() {
            //1创建一个实现 Comparable 接口的类
            //2.返回一个实现类的对象
            class Mycomparable implements Comparable{
    
                @Override
                public int compareTo(Object o) {
                    // TODO Auto-generated method stub
                    return 0;
                }
                
            }
            return new Mycomparable();
        }
    }
    

    使用二 返回 接口的匿名内部类对象

    class OuterClass{
        public Comparable getComparable1() {
            //返回一个实现 Comparable 接口的匿名内部类对象
            
            return new Comparable() {
     
                @Override
                public int compareTo(Object o) {
                    // TODO Auto-generated method stub
                    return 0;
                }
                
            };
        }
    }
    

    相关文章

      网友评论

          本文标题:Java篇-内部类的使用

          本文链接:https://www.haomeiwen.com/subject/kprklftx.html