Java: 内部类
一 内部类的概念
在Java中,可以将一个定义在另一个类或者一个方法的内部,前者称为内部类,后者称为外部类,也是封装的一种体现。
外部类相当于火车,内部类相当于火车的一小节。
二 内部类的分类
1.静态内部类
静态内部类可以看作是外部类的一个静态成员。它不依赖外部类的实例,可以直接创建,不需要先创建外部类的对象。
class Outclass{
public int date1=1;
private int date2=2;
public static int date3=3;
//静态内部类
static class InnerClass{
public int date4=4;
private int date5=5;
public static int date6=6;
public void test() {
Outclass outclass = new Outclass();
System.out.println(outclass.date1);
System.out.println(date3);
System.out.println(date4);
System.out.println(date4);
System.out.println(date5);
System.out.println(date6);
System.out.println(date5);
}
}
}
class Outclass2{
public int date1=1;
private int date2=2;
public static int date3=3;
特点:
- 静态内部类只能访问外部类的静态成员。
- 可以直接创建,不需要依赖外部类的实例。
2.成员内部类
成员内部类是定义在另一个类中的普通类。成员内部类的对象必须通过外部类的对象来创建,因为它需要访问外部类的实例,未被static修饰。
class Outclass2{
public int date1=1;
private int date2=2;
public static int date3=3;
//内部类
class InnerClass2{
public int date4=4;
private int date5=5;
public static int date6=6;
private int date1;
public void test() {
Outclass outclass = new Outclass();
System.out.println(Outclass2.this.date1);
System.out.println(this.date1);
System.out.println(date4);
System.out.println(date4);
System.out.println(date5);
System.out.println(date6);
System.out.println(date5);
}
}
}
3. 局部内部类
局部内部类是定义在方法或代码块中的类,它的作用域仅限于该方法或代码块。
class Outer {
void outerMethod() {
// 局部内部类
class LocalInner {
void display() {
System.out.println("Inside");
}
}
LocalInner localInner = new LocalInner();
localInner.display();
}
}
public class Main {
public static void main(String[] args) {
Outer outer = new Outer();
outer.outerMethod(); // 输出: Inside LocalInner class
}
}
4. 匿名内部类
匿名内部类是没有名字的内部类,通常用于实现接口或继承抽象类,并且实例只使用一次。
abstract class Animal {
abstract void sound();
}
public class Main {
public static void main(String[] args) {
// 创建匿名内部类,继承自抽象类 Animal
Animal myAnimal = new Animal() {
void sound() {
System.out.println("sound");
}
};
myAnimal.sound();
}
}
希望能对大家有所帮助!!!!!
原文地址:https://blog.csdn.net/blamep/article/details/142335832
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!