1.静态成员内部类
举例:
public class Outer01 {
public static class Inter{
public static void eat() {
System.out.println("造他就完了");
}
}
}
输出:Outer01.Inter.eat();
2.非静态成员内部类
如果成员内部类是非静态类加静态方法的话 依然可以直接 外部类.内部类.方法 去调用这个方法
但是如果内部类是非静态类加非静态方法的话 就需要实例化非静态成员内部类 new 外部类().new 内部类().方法
非静态类加静态方法举例:
public class Outer02 {
public class Inner{
public static void eat() {
System.out.println("造他就完了");
}
}
}
输出:Outer02.Inner.eat();
非静态类加非静态方法举例:
public class Outer03 {
public class Inner{
public void eat() {
System.out.println("造他就完了");
}
}
}
输出:new Outer03().new Inner().eat();
3.利用方法调用非静态成员内部类中的方法
举例:
public class Outer04 {
public class Inner{
public void eat() {
System.out.println("造他就完了");
}
}
public void innereat() {
new Inner().eat(); //在外部类下建立一个非静态方法去直接调用上方内部类里
} 的方法
}
输出:new Outer04().innereat(); //然后在外边直接调用此方法即可
4.静态方法调用及局部内部类静态方法
举例:
public class Outer05 {
public static void innereat() {
class Inner {
public static void eat() {
System.out.println("造他就完了");
}
}Inner.eat();
}
}
输出:Outer05.innereat();
5.静态方法调用及局部内部类非静态方法
举例:
public class Outer06 {
public static void innereat() {
class Inner {
public void eat() {
System.out.println("造他就完了");
}
}new Inner().eat(); //这两个区别就是 方法变成了非静态 变成非静态不要慌 new他就完了
}
}
输出:Outer06.innereat();
6.非静态方法调用及局部内部类非静态方法
举例:
public class Outer07 {
public void innereat() {
class Inner {
public void eat() {
System.out.println("造他就完了");
}
}new Inner().eat();
}
}
输出:new Outer07().innereat(); //还是那句话 变成非静态不要慌 new他上面那个类就完了
7.局部内部类匿名对象
内部类里面没有方法 在通过实例化的过程中 直接写出并调用方法 叫局部内部类匿名对象
举例:
public class Outer08 {
public void innereat() {
class Inner {
}
new Inner() {
public void eat() {
System.out.println("造他就完了");
}
}.eat();
}
}
8.匿名内部类
在写匿名方法的时候 这个实例化的对象 必须是要存在的
这个时候我们可以输入new Object 因为Object 是个超类 相当与最大的类 这种写法我们称之为匿名内部类
举例:
public class Outer09 {
public void innereat() {
new Object() {
public void eat() {
System.out.println("造他就完了");
}
}.eat();
}
}
这篇博客详细探讨了Java中内部类的调用,包括静态和非静态成员内部类的使用。对于非静态成员内部类,即使有静态方法也需要通过外部类实例来调用。静态成员内部类可以直接通过外部类进行调用。此外,还讨论了局部内部类、匿名内部类以及它们在静态和非静态方法中的应用,并提供了多个示例进行说明。
946

被折叠的 条评论
为什么被折叠?



