内部类调用外部类的方法
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); } };