语法:
class 类名1 {//外部类 class 类名2 {//内部类,由于定义在类中方法外,属于外部类成员,所以又称为成员内部类 } public void 方法名(){ class 类名3{内部类,由于定义在方法中,所以又称为局部内部类 } } }成员:
属性:非静态属性,基本数据类型以及String静态常量
方法:非静态方法
访问:
内部类访问外部类:直接访问
外部类访问内部类:实例化内部类,通过内部类对象访问其对象
外部类以外类访问内部类:实例化外部类,通过外部类对象实例化内部类,通过内部类对象访问成员
//在外部类以外的类中 Outer outer = new Outer();//实例化外部类 Outer,Inner inner = outer.new Inner();//通过外部类对象实例化内部类 s.o.p(inner.成员名);//内部类对象访问成员成员:与成员内部类一致
访问:
内访外、外访内与成员内部类一致
外部类以外的类无法访问私有成员内部类
概念:使用static修饰符的内部类,又称之为嵌套内部类
成员:
属性:静态、非静态属性,静态常量
方法:静态/非静态方法
访问:
内部类访问外部类:实例化外部类,通过 对象.成员名 进行访问
外部类访问内部类:实例化内部类,通过 对象.成员名 进行访问
外部类之外类访问内部类:实例化内部类(Outer.Inner Inner = new Outer.Inner();),通过 对象.成员名 进行访问
概念:定义在方法中的内部类
成员:
属性:非静态属性,基本数据类型的静态常量和String类型静态常量
方法:非静态方法
访问:
局部内部类访问外部类:直接访问
外部类访问局部内部类:实例化内部类,通过 对象.成员名 进行访问
外部类之外类不能访问局部内部类
概念:该局部内部类没有类名
应用:
局部内部类继承父类
//父类类型引用指向子类对象 Father f = new Father()/*类名*/{ @Override public void method(){//(匿名)子类重写父类方法 System.out.println("son method...");//s.o.p输出 } }; fu.method();如果需要使用匿名内部类中的特有方法
//使用匿名对象,但该匿名内部类的成员只能使用一次 System.out.println(new Fu(){ int x = 250; }/*匿名对象*/.x);局部内部类实现接口
//接口类型引用指向实现类对象 Inter inter = new Inter(){ @Override public void method(){ System.out.println("impl method...");//s.o.p输出 } };如果需要使用实现类中特有成员,和上面的继承一样
java中访问修饰符:public、protected、默认、private
作用:用于空间类及其成员,可以被那个访问,以及不被那个类访问,达到权限管理的效果
本类本包不同包但具有继承关系不同包privatetruefalsefalsefalse默认truetruefalsefalseprotectedtruetruetruefalsepublictruetruetruetrue访问权限大小:public>protected>默认>private
安全性大小:private>默认>protected>public