内部类

1 内部类:在类中定义的类,成为内部类.一个类的存在依赖于另一个类,如果这个类独立存在没有存在的价值,所以可以把他设计成为内部类。
内部类可以直接访问外部类的私有成员和方法
2 顶层类修饰符可以是public和默认的修饰符
内部类可以是任意修饰符
内部类也可以是顶层类的一个成员变量
3 内部类的分类:静态成员类 实例成员内部类(成员类) 方法类 匿名类
4 内部类可以访问外围类的私有属性(不用建立对象)
外围类可以访问内部类的属性,但是必须建立对象。否则无法访问
5 静态内部类不可以访问外部类的实例变量,可以访问外部类的静态变量。静态内部类和外围类的对象没有关系。与顶层类没有多大的差别,只不过是
6 实例成员内部类,简称成员类。成员类必须依赖于外围类的对象。
7方法类:定义在方法中的类称为方法类,也成为局部类,类似于方法类的变量。
方法类不能够使用static修饰和修饰符修饰方法中的类创建的对象是在堆内存中,当方法运行结束,仍然存在。
而方法中的普通变量是在栈内存中,当方法运行结束后,该变量会自动垃圾回收
方法类的用处实现一个接口,返回方法类的实例对象。封装。
8方法类不能够使用static修饰?
static会在整个类的生命周期存在,但是局部变量的作用域只是位于方法体,两者冲突。
9局部变量为什么没有访问修饰符?
局部变量没有访问修饰符,因为他的生命周期就在这个方法中。其他的方法不能够使用这些局部变量,加不加修饰符没有意义。只要能够访问这个方法,就能够访问这个方法。
10 JDK1.8之后,内部类可以访问方法的非final属性,但是不能更改,相当于final。在JDK1.8之前,不能访问非final属性,只能是final属性。为什么?
java中每个方法相当于一个线程。当有内部类的时候,内部类使用方法中的变量必须是成员变量。多个线程(内部类中的方法和内部外的方法两个线程)对同一个变量修改,会造称错乱
11 匿名内部类
没有名称,方法类的类体较少的时候可以使用那个内部类,如果方法类的类体较长,不建议使用匿名类。匿名类最后必须加分号。
12 java内部类好处
第一个好处:隐藏你不想让别人知道的操作,也即封装性。
第二个好处 :一个内部类对象可以访问创建它的外部类对象的内容,甚至包括私有变量

你可能感兴趣的:(内部类)