package org.example;
/**
* 内部类
* 1. Java中允许将一个类A声明在另一个类B中,则类A就是内部类,类B被成为外部类。
* <p>
* 2. 内部类的分类:成员内部类(静态、非静态)、局部内部类(方法内、代码块内、构造器内)
* <p>
* 3. 成员内部类:
* 一方面,作为外部类的成员:
* >调用外部类的结构 OuterClass.this.属性或方法;OutClass.this. 默认省略
* >可以用static来修饰
* >可以被四种不同的权限修饰符修饰
* <p>
* 另一方面,作为一个类:
* >类内可以定义属性、方法、构造器、代码块、内部类
* >可以继承
* >可以被final修饰
* >可以被abstract修饰
* 4.关注如下三个问题
* 4.1 如何实例化成员内部类的对象
* 4.2 如何在成员内部类中区分调用外部类的结构
* 4.3 开发中局部内部类的使用 (略)
*/
public class InnerClassTest {
//创建Leg实例(静态成员内部类的创建)
Person.Leg leg = new Person.Leg();
//创建Brain实例(非静态成员内部类的创建)
//方法1
Person p = new Person();
Person.Brain brain = p.new Brain();
//方法2
Person.Brain b2 = new Person().new Brain();
}
class Person {
String name;
class Brain {
//非静态内部类不可以拥有静态属性,静态方法
public String name;
public Brain() {
}
public void method3() {
//调用外部类的属性
String a = Person.this.name;
//调用外部类的方法
method();
}
class EE {
}
{
}
}
static class Leg {
void method4() {
//调用外部类的静态方法,不可调用外部类的非静态方法
method2();
}
}
public void method() {
//局部内部类
class AA {
}
}
public Person() {
//局部内部类
class BB {
}
}
{
//局部内部类
class CC {
}
}
public static void method2() {
//局部内部类
class DD {
}
}
static {
//局部内部类
class EE {
}
}
}
内部类
最新推荐文章于 2024-07-31 19:38:21 发布