内部类——一目了然

来源:互联网 发布:snmp 监控软件 编辑:程序博客网 时间:2024/06/03 19:26
                                                                                                                           

内部类:声明在累了中的类叫内部类
内部类分类:
成员内部类
静态内部类
匿名内部类
局部内部类

 内部类的主要特点

内部类可以很好的实现隐藏,可以使用protected、private修饰符
内部类可以直接访问外部类的所有成员,包括私有的成员,但是外部类不能直接访问内部类的成员,必须首先要建立内部类的对象才可访问
内部类可以解决一些问题,比如间接的去实现多继承。可以避免修改接口而实现同一个类中两种同名方法的调用。





成员内部类:
产生成员内部类的对象外部类才可以访问内部类的方法和变量
Outer.inner a=Outer.new inner();
在内部类中访问外部类重名的变量或者方法,用   外部类名+this.变量(方法)
在成员内部类中不要声明静态成员或者方法,但常量除外
内部类和外部类的名字不能重名
内部类所对应的class文件为:  外部类的名字$内部类的名字


静态内部类

静态内部类中只能访问外部静态的成员。
产生静态内部类的对象
Outer.inner a=new Outer.inner();
外部类可以直接访问静态内部类的静态方法,不能直接访问非静态方法,必须先创建静态内部类的对象好以后才可以访问。     

 匿名内部类
没有类名的类

特点:

没有类名

语法是 new 父类/接口(){
重写父类或接口的方法

new出来的是子类或接口的实现类

匿名内部类不可以声明静态成员




局部内部类

在方法中声明的类叫局部内部类
特点:
外部的其他类不能构造出局部内部类对象
局部内部类不能加访问修饰符
局部内部类对象只能在声明局部内部类的方法中产生
局部内部类只能访问其声明方法中的常量,非常量不能使用




内部类主要的作用:

封装一些复杂的数据,不对外装箱的类型:

装箱的概念:
把基本数据类型封装成引用数据类型(在1.5版本之前要手动装箱)

基本数据类型与之对应的包装类有:
整形——Integer

short——Short

long——Long
 
char——Character

boolean——Boolean

byte——Byte
...........(其他首字母大写)


枚举类:当类被加载的时候预先创建好多个对个对象供外部的对象使用,也就是说对象由自身创建,外部的其他类不用创建,直接拿来用就可以了。
public enum Color{
RED,BLUE,BLACEK.......(可以先构造很多相当于一个类)


枚举类的值是常量所以可以放在switch中查找
StringBuilder:它是一个动态字符串
他底层是一个字符数组,用默认构造方法的话大小为16,超过的话会在内存中开辟一个原先16*2+2的新数组,再把原先数组中的数据拷贝到新数组中
}