美文网首页前进吧蜗牛程序员
java内部类种类及其特点

java内部类种类及其特点

作者: cobs | 来源:发表于2017-06-16 07:22 被阅读141次

定义

内部类是指在一个外部类的内部再定义一个类。编译成功,就会成为完全不同的两类。

内部类有四种情况

  • 成员内部类:成员内部类,就是作为外部类的成员,可以直接使用外部类的所有成员和方法,即使是private的。同时外部类要访问内部类的所有成员变量/方法,则需要通过内部类的对象来获取。实例化方式:new Out().new In();
  • 局部内部类:是指内部类定义在方法和作用域内。
  • 静态内部类:其实它和成员内部类很相似,只是只能访问外部类的静态成员变量,具有局限性。实例化方式:new Out.In();其实你会发现就是把内部类看成一个属性来对待。
  • 匿名内部类:匿名内部类不能加访问修饰符。其实我们最常见的执行一个线程就是用的内部类的方式。
    new Thread(){
            @Override
            public void run(){
                System.out.println(name);
            }
        }.start();
    

例子

成员内部类

package innerclass;

public class innerOut {
   private int num = 12;
   
   class innerIn {
       private int num = 13;
       public void print() {
           int num = 14;
           System.out.println("局部变量:" + num);
           System.out.println("内部类变量:" + this.num);
           System.out.println("外部类变量:" + innerOut.this.num);
       }
   }
}

静态内部类

package innerclass;

public class Out {
    private static int age = 12;
    
    static class In {
        public void print() {
            System.out.println(age);
        }
    }
}

匿名内部类

package innerclass;

public class anonymityClass {
    //注意是final类型的
    public void startThread(final String name){
        new Thread(){
            @Override
            public void run(){
                System.out.println(name);
            }
        }.start();
    }
}

局部内部类

package innerclass;

public class methodInnerClass {
    private int num = 12;
     
    public void Print(final int x) {
        class In {
            public void inPrint() {
                System.out.println(x);
                System.out.println(num);
            }
        }
        new In().inPrint();
    }
}

内部类的特点总结

在方法间定义的非静态内部类:

  • 外围类和内部类可互相访问自己的私有成员。
  • 内部类中不能定义静态成员变量。

在方法间定义的静态内部类:

  • 只能访问外部类的静态成员。

在方法中定义的局部内部类:

  • 该内部类没有任何的访问控制权限
  • 外围类看不见方法中的局部内部类的,但是局部内部类可以访问外围类的任何成员。
  • 方法体中可以访问局部内部类,但是访问语句必须在定义局部内部类之后。
  • 局部内部类只能访问方法体中的常量,即用final修饰的成员。

在方法中定义的匿名内部类:

  • 没有构造器,取而代之的是将构造器参数传递给超类构造器。

既然了解了内部类,大家可以想想,我们平时到底哪些用到了内部类,请留言到评论区哦,欢迎大家讨论!!简友们都太低调,都不愿评论!


上一篇文章 java 线程池使用和详解

如有什么不对的地方,欢迎大家指出来,我们共同学习!!

欢迎关注我的微信公众号cobs-snail,让我们一起前进吧!!

前进吧蜗牛

相关文章

  • java内部类种类及其特点

    定义 内部类是指在一个外部类的内部再定义一个类。编译成功,就会成为完全不同的两类。 内部类有四种情况 成员内部类:...

  • Java内部类

    Java内部类 大纲: java内部类有什么特点?为什么需要内部类? 非静态内部类持有外部类的引用 内部类的分类。...

  • Java 中的静态内部类

    Java 中的静态内部类 静态内部类是 static 修饰的内部类,这种内部类的特点是: 1、 静态内部类不能直接...

  • (java知识小总结二)2018-05-31

    5.2Java 中的静态内部类:静态内部类是 static 修饰的内部类 特点:(1)、 静态内部类不能直接访问外...

  • Java中内部类到底有什么用?

    java中内部类种类较多,语法比较复杂,用法也不尽相同。概括下来,可以分类为以下五种内部类。 内部类 嵌套内部类 ...

  • Java中的内部类的种类及其使用

    Java中的内部类共分为四种: 静态内部类static inner class (also called nest...

  • Java 中的方法内部类

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

  • PHP转JAVA的记录

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

  • Java内部类

    Java内部类,简单来说就是将一个类定义在另一个类或者方法里面,主要分为成员内部类,局部内部类,匿名内部类和静态内...

  • 内部类

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

网友评论

  • Yang_Bob:用的最多的还是匿名内部类(按钮点击监听)和成员内部类(自定义接口的时候)

本文标题: java内部类种类及其特点

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