静态内部类
- 静态内部类只能访问外部类中的静态变量和静态方法,如果想要访问非静态的需要创建外部类的对象。
- 城建静态内部类对象的格式:
外部类名.内部类名 对象名 = new 外部类名.内部类名();
- 调用静态党发的格式:
- 外部类名.内部类名.方法名();
注意事项:
- 静态内部类也是成员内部类中的一种
- 静态内部类只能访问外部类中的静态变量和静态方法
Demo
package InnerClassDemo3;
public class Outer {
int a = 10;
static int b = 20;
static class Inner{
public void show1(){
System.out.println("非静态的方法被调用了");
}
public static void show2(){
System.out.println("静态的方法被调用了");
}
}
}
test类
package InnerClassDemo3;
public class Test {
public static void main(String[] args) {
Outer.Inner oi = new Outer.Inner();
oi.show1();
Outer.Inner.show2();
}
}
局部内部类
- 将内部类定义在方法里面就叫做局部内部类,类似于方法里面的局部变量。
- 外界是无法直接使用,需要在方法内部创建对象并使用。
- 该类可以直接访问外部类的成员,也可以访问方法内的局部变量。
Demo
package InnerClassDemo4;
public class Outer {
int b = 20;
public void show(){
int a = 10;
class Inner{
String name;
int age;
public void method(){
System.out.println(b);
System.out.println(a);
System.out.println("局部有内部类中的method方法");
}
public static void method2(){
System.out.println("局部有内部类中的method2静态方法");
}
}
Inner i = new Inner();
System.out.println(i.name);
System.out.println(i.age);
i.method();
Inner.method2();
}
}
package InnerClassDemo4;
public class Test {
public static void main(String[] args) {
Outer o = new Outer();
o.show();
}
}
匿名内部类
-
匿名内部类本质上就是隐藏了名字的内部类。
格式: new 类名或者接口名() { 重写方法; };
举例: new Inter(){ public void show(){ } }
最后:欢迎大家关注我的公众号