美文网首页
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 Concurrent 内部类基础介绍

    看Concurrent包源码时,其中存在大量的内部类使用,所以特地抽出一篇来介绍内部类。内部类其实是Java 经常...

  • Java 内部类和泛型的理解

    Java 内部类 Java非静态内部类持有对外部类的引用,可以访问外部类的状态使用方法 OuterClass.th...

  • 内部类

    内部类可以分为:非静态内部类;静态内部类;匿名内部类。 一、内部类 首先要说,Java为什么要使用内部类?java...

  • Java篇-内部类的使用

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

  • Java 中的方法内部类

    Java 中的方法内部类 方法内部类就是内部类定义在外部类的方法中,方法内部类只在该方法的内部可见,即只在该方法内...

  • Kotlin-Object关键字作用

    Object关键字使用场景:匿名内部类、单例、伴生对象。 匿名内部类 Kotlin匿名内部类定义使用跟Java类似...

  • PHP转JAVA的记录

    Java 数组 内部类 内部类的创建:内部类可以对包内其他类隐藏想实现一个接口时, 不想新建类文件 内部类可以访问...

  • java内部类

    一、内部类为什么存在 为什么要使用内部类 二、内部类的分类 java内部类的分类 三、为什么内部类中访问局部变量,...

  • 2017-10-12

    这是我学习Java内部类的笔记 1.为什么使用内部类? 使用内部类最吸引人的原因是:每个内部类都能独立地继承一个(...

  • 那为何要使用匿名内部类

    那为何要使用匿名内部类 Think in java上说:使用内部类最吸引人的原因是:每个内部类都能独立地继承一个(...

网友评论

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

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