Java内部类_动力节点Java学院整理
本篇攻略是针对Java的内部类进行详细讲解的,包括概念、特点、分类、语法等内容。
概念
内部类是指在一个类的内部定义的另一个类,它通常与外部类有某种联系。内部类是Java中一种非常重要的语法结构,包含了许多编程细节方便了程序员的编码。
特点
- 内部类可以直接访问外部类的成员变量和方法,包括私有成员。
- 外部类不能直接访问内部类的成员变量和方法,但可以通过创建内部类对象的方式来访问。也可以在外部类中定义方法来访问内部类的成员。
- 内部类可以定义在类、方法、代码块中,称为成员内部类、局部内部类、匿名内部类。
- 内部类可以单独存在,也可以继承其他类或实现接口。
类型
成员内部类
成员内部类是指被定义在另一个类中的类,它可以直接访问其外部类的成员,包括私有成员。成员内部类可以拥有public、protected、default和private四种访问权限。
示例代码:
public class Outter {
private int value = 10;
public class Inner {
private int value = 20;
public void printValues() {
System.out.println("内部类成员变量value:" + this.value);
System.out.println("外部类成员变量value:" + Outter.this.value);
}
}
public static void main(String[] args) {
Outter outter = new Outter();
Outter.Inner inner = outter.new Inner();
inner.printValues();
}
}
局部内部类
局部内部类是指被定义在方法中的类,它只能在这个方法内使用,不能再方法外部被访问。局部内部类只能访问方法中final修饰的局部变量。
示例代码:
public class Outter {
private int value = 10;
public void printValues() {
final int value = 20;
class Inner {
public void printValue() {
System.out.println("局部变量value:" + value);
System.out.println("外部类成员变量value:" + Outter.this.value);
}
}
Inner inner = new Inner();
inner.printValue();
}
public static void main(String[] args) {
Outter outter = new Outter();
outter.printValues();
}
}
匿名内部类
匿名内部类是指没有名字的内部类,它通常是通过接口或抽象类的方式创建。匿名内部类可以直接在方法或代码块中实例化并使用。
示例代码:
public interface Person {
void eat();
}
public class Test {
public static void main(String[] args) {
Person person = new Person() {
@Override
public void eat() {
System.out.println("匿名内部类重写的eat方法");
}
};
person.eat();
}
}
语法
成员内部类语法
public class Outter {
private int value = 10;
public class Inner {
//...
}
}
局部内部类语法
public class Outter {
private int value = 10;
public void printValues() {
class Inner {
//...
}
}
}
匿名内部类语法
public interface MyInterface {
void print();
}
public class Test {
public static void main(String[] args) {
MyInterface myInterface = new MyInterface() {
@Override
public void print() {
System.out.println("匿名内部类实现的print方法");
}
};
myInterface.print();
}
}
以上是Java内部类的完整讲解,包括概念、特点、分类、语法等内容。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java内部类_动力节点Java学院整理 - Python技术站