访问类中内部类中的方法的两种方法:
方法1、
class OuterInnerClass {
public static void main(String[] args) {
Outer.Inner oi = new Outer().new Inner();
oi.print();
}
}
class Outer { //这是一个普通部类
class Inner { //这是一个普通内部类
public void print(){
System.out.println("访问内部类成功!");
}
}
输出
方法2、
class OuterInnerClass {
public static void main(String[] args) {
//只是这里分开创建对象了!
Outer o = new Outer();
Outer.Inner oi = o.new Inner();
oi.print();
}
}
class Outer { //这是一个普通部类
class Inner { //这是一个普通内部类
public void print(){
System.out.println("访问内部类成功!");
}
}
输出
访问类中私有内部类中的方法:
class OuterInnerClass {
public static void main(String[] args) {
Outer oi = new Outer(); //访问类中私有内部类中的方法
oi.method(); //可以将私有内部类看做一个私有方法
}
}
class Outer { //这是外部类
/*
通过内部创建方法访问本类中的私有类,和类中私有方法的访问原理一样
*/
public void method(){
PrivateInner p = new PrivateInner();
p.print();
}
private class PrivateInner { //这是内部类(私有)
public void print (){
System.out.println("访问私有内部类成功!");
}
}
}
输出
访问类中静态内部类中的非静态、静态方法:
class OuterInnerClass {
public static void main(String[] args) {
Outer.StaticInner oi1 = new Outer.StaticInner();//访问类中静态内部类中的非静态方法
oi1.print();
Outer.StaticInner.staticPrint(); //访问类中静态内部类中的静态方法之方法1,
//直接类名.调用
Outer.StaticInner oi2 = new Outer.StaticInner();//访问类中静态内部类中的静态方法之方法2,
//创建对象后调用
oi2.staticPrint();
}
}
class Outer { //这是一个普通部类
static class StaticInner { //这是内部类(静态)
public void print (){
System.out.println("访问静态内部类成功!");
}
public static void staticPrint (){
System.out.println("访问静态内部类静态方法成功!");
}
}
}
输出