内部类调用外部类的方法
public class test{
public static void main(String[] args) {
Outer.Inner p=new Outer().new Inner();
p.show();
}
}
class Outer{
int sum;
//在Outer类中声明一个内部类Inner
class Inner{
public void show(){
System.out.println("这是内部类的方法");
//在内部类的方法中调用外部类的方法:直接外部类的名字+this+外部类方法名
Outer.this.test();
}
}
public void test(){
System.out.println("这是一个外部类方法");
}
}
外部调用内部类的方法
1. 使用static可以声明一个内部类, 可以直接在外部调用
// 定义外部类
public class Outer{
// 定义外部类的私有属性 info
private static String info = "hello world";
// 定义外部类的方法
public void fun(){
// 通过内部类的实例化对象调用内部类的方法
new Inner().print();
}
// 使用static定义内部类
static class Inner{
// 定义内部类的方法
public void print(){
// 直接访问外部类的私有属性
System.out.println(info);
}
};
};
public class test{
public static void main(String args[]){
new Outer.Inner().print(); // 调用外部类的fun()方法
}
};
2. 不使用statc声明一个内部类 ,使外部调用
//定义外部类
class Outer{
// 定义外部类的私有属性
private String info = "hello world";
// 定义外部类的方法
public void fun(){
// 通过内部类的实例化对象调用方法
new Inner().print();
}
// 定义内部类
class Inner{
// 定义内部类的方法
public void print(){
// 直接访问外部类的私有属性
System.out.println(info);
}
};
};
public class test{
public static void main(String args[]){
// 外部类实例化对象
Outer out = new Outer();
// 内部类实例化对象
Outer.Inner in = out.new Inner();
// 调用内部类的方法
in.print();
}
};
3. 在方法中定义内部类 ,使外部调用
// 定义外部类
class Outer{
// 定义外部类的私有属性
private String info = "hello world";
// 定义外部类的方法
public void fun(final int temp){
// 在方法中定义的内部类
class Inner{
// 定义内部类的方法
public void print(){
// 直接访问外部类的私有属性
System.out.println("外部类的属性:" + info);
System.out.println("外部类的方法中的参数:" + temp) ;
}
};
// 通过内部类的实例化对象调用方法
new Inner().print();
}
};
public class InnerClassDemo05{
public static void main(String args[]){
// 调用外部类的方法
new Outer().fun(30);
}
};