内部类匿名类


1、内部类

1.1 内部类是什么?

​ 所谓内部类,就是在一个类的内部还有一个类的嵌套操作。

public class Test
{
    private int m=6;

    class InnerTest
    {
        private int n=5;
        public void print()
        {
            System.out.println("inner say:  "+m);
        }
    }

    public void say()
    {
        InnerTest innerTest = new InnerTest();
        System.out.println("test say: "+ innerTest.n);
    }
}
public static void main(String[] args) {
        Test test = new Test();
        InnerTest innerTest = test.new InnerTest();
        innerTest.print();
        test.say();

        InnerTest innerTest2 = new Test().new InnerTest();
        innerTest2.print();    
}

1.2 内部类的优点

​ 内部类与外部类可以方便的访问彼此的私有域(包括私有方法、私有属性)。

​ 内部类是另外一种封装,对外部的其他类隐藏。

​ 内部类可以实现java的单继承局限。

image1

image2

1.3 成员内部类

​ 成员内部类内部不允许存在任何static变量或方法 正如成员方法中不能

有任何静态属性 (成员方法与对象相关、静态属性与类有关)。

image3

1.3 静态内部类

​ 关键字static可以修饰成员变量、方法、代码块、其实还可以修饰内部类,使 用static修饰的内部类我们称之为静态内部类,静态内部类和非静态内部类之间存 在一个最大的区别,非静态内部类在编译完成之后会隐含的保存着一个引用,该 引用是指向创建它的外围类,但是静态类没有。没有这个引用就意味着:

​ 1.静态内部类的创建不需要依赖外部类可以直接创建。

​ 2.静态内部类不可以使用任何外部类的非static类(包括属性和方法),但可以存在自己的成员变量。

1.4 方法内部类

​ 方法内部类顾名思义就是定义在方法里的类 。

1.方法内部类不允许使用访问权限修饰符(public、private、protected)均不允许。

  1. 方法内部类对外部完全隐藏,除了创建这个类的方法可以访问它以外,其他地方均不能访问(换句话说其他方法或者类都不知道有这个类的存在)方法内部类对外部完全隐藏,出了创建这个类的方法可以访问它,其他地方均不能访问。

  2. 方法内部类如果想要使用方法形参,该形参必须使用final声明(JDK8形参变为隐式final声明)

image4

2、匿名内部类

​ 匿名内部类就是一个没有名字的方法内部类,因此特点和方法与方法内部类完全一致,除此之外,还有自己的特点:

​ 1.匿名内部类必须继承一个抽象类或者实现一个接口。

​ 2.匿名内部类没有类名,因此没有构造方法。

image5


文章作者: kilig
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 kilig !
 上一篇
事务 事务
1、概念​ 事务指逻辑上的一组操作,组成这组操作的各个单元,要不全部成功,要不全部不成功。 2、为什么需要JAVA事务?​ 事务是为解决数据安全操作提出的,事务控制实际上就是控制数据的安全访问。 ​ 举一个
下一篇 
java细节 java细节
1、对象的clone1.1 实现Cloneable接口​ 继承Cloneable接口,覆盖public Object clone()方法。若类中还有其他类的引用,则其他类中也必须覆盖clone方法。 public class
  目录