内部类:指的是一个类的定义放在另一个类的内部。内部类作为外部类的一个成员,并且依附于外部类而存在的。
内部类仍是一个独立的额的类,每个内部类都能独立的继承自一个(接口)的实现,所以无论外围类是否已经集成了某个接口的实现,对于内部类都没有影响。
内部类分为4种:
成员内部类:在一个包含类中定义的不使用静态修饰符的类型 与成员变量、方法同一个层次 可以访问包含类所有的成员 在包含类中中创建成员内部类实例的语法: this.new Innerclass(); 在包含类外创建成员内部类实例的语法 (new Outerclass()).new Innerclass();
方法内部类:定义在方法体中的类 方法内部类只能在定义该内部类的方法内实例化,不可以在此方法外对其实例化 最少使用的内部类形式 如同本地变量的定义,不允许有访问修饰符 只能访问用final修饰的本地变量
匿名内部类:没有名字的内部类 只用到类的一个实例 类在定义后马上用到 类非常小(OLD SUN推荐是在4行代码以下) 给类命名并不会导致你的代码更容易被理解
静态内部类:不能与包含类同名 编译后生成一个完全独立的类文件 只能访问包含类所有静态变量、静态方法 要创建嵌套类的对象,并不需要其外围类的对象 创建静态内部类实例的语法: Outer.Inner inner = new Outer.Inner();
package study3_3;public class demo01 { public static void main(String[] args) { //Outer.Inner2 inner2 = new Outer.Inner2(); Outer outer = new Outer(); outer.setName("tom"); System.out.PRintln(outer.innerClass()); //要获得一个内部类,必须先创建外部类 /*Outer outer = new Outer(); Outer.Inner inner = outer.getInnerClass(); inner.getInfo(); Outer.Inner inner2 = outer.new Inner();*/ }} package study3_3;public class Outer { private String name; public String innerClass(){ class Inner{ public String getInfo(){ return"hello:"+name; } } Inner inner =new Inner(); return inner.getInfo(); } public String getName(){ return name; } public void setName(String name){ this.name=name; } public String getInfo(){ return name; } //成员内部类 class Inner{ private String str; public String getInfo(){ return str +name; } //静态内部类 /*static class Inner2{ public void pribtInfo(){// System.out.println(name); } }*/ }}
新闻热点
疑难解答