本文将从以下几个方面来详细介绍Java类中类的调用。
一、内部类的定义与使用
Java中可以定义内部类,也就是在类里面定义类。内部类分为静态内部类和非静态内部类。通过内部类可以实现类信息的隐藏,同时也可以加强封装性。
public class OuterClass{
private String outerString;
private static int outerInt;
public void outerMethod(){
InnerClass innerClass = new InnerClass();
innerClass.innerMethod(); // 内部类方法的调用
}
public static void outerStaticMethod(){
StaticInnerClass staticInnerClass = new StaticInnerClass();
staticInnerClass.staticInnerMethod(); // 静态内部类方法的调用
}
public class InnerClass{
private String innerString;
public void innerMethod(){
outerString = "hello"; // 外部类成员变量的访问
outerInt = 10; // 外部类静态成员变量的访问
}
}
public static class StaticInnerClass{
public void staticInnerMethod(){
outerInt = 20; // 外部类静态成员变量的访问
}
}
}
二、成员内部类的实例化
成员内部类的实例化需要先实例化外部类,再通过外部类实例来实例化内部类。
OuterClass outerClass = new OuterClass();
OuterClass.InnerClass innerClass = outerClass.new InnerClass();
三、局部内部类的定义与使用
局部内部类是在代码块内部定义的类,如方法中定义的类,仅在定义的代码块内有效。需要注意的是,局部内部类只能使用final修饰的局部变量。
public class OuterClass{
private String outerString;
public void outerMethod(){
final int num = 10; // final修饰的局部变量
class LocalInnerClass{
public void localInnerMethod(){
outerString = "hello";
System.out.println("num的值是" + num);
}
}
LocalInnerClass localInnerClass = new LocalInnerClass();
localInnerClass.localInnerMethod(); // 局部内部类方法的调用
}
}
四、匿名内部类的定义与使用
匿名内部类是一种没有名字的内部类,一般在定义的同时就创建该类的实例。匿名内部类使用的场景很多,例如Listener接口、Runnable接口等。
public class OuterClass{
public void outerMethod(){
new Thread(new Runnable(){
@Override
public void run(){
System.out.println("匿名内部类的实现");
}
}).start(); // 匿名内部类的实例化与调用
}
}
五、总结
Java类中类的调用包括内部类和局部内部类、匿名内部类等几种形式,它们都在一定程度上实现了类信息的隐藏和封装性的加强。在实际开发中,需要根据具体需求选择相应的内部类形式进行使用。