Java——内部类
2021-05-29 10:03
标签:外部 pre beat rgs 例子 成员 new 抽象方法 person 一个类A内部定义了一个类B,那么B就是A的内部类。A可以称为外部类。 类中方法外定义的类,我们称为成员内部类。 如果要描述两个事物,这两个事物存在包含关系,就可以使用内部类。人与心的关系;汽车与引擎的关系。 内部类的类型表示:外部类名.内部类名 成员内部类创建对象,需要借助外部类的对象,如下 代码示例 例子 匿名内部类是一个非常特殊的内部类,从命名可以看出,匿名内部类是没有类名,因此这个内部类只能用一次。匿名内部类一般用于简化代码,当要快速实现一个抽象方法时,我们就可以使用匿名内部类来简化,可以不用专门定义一个有名类来操作。所以,要使用匿名内部类,必须要有一个父类或者父接口。 使用父类型变量多态接收该匿名子类对象,以匿名对象的方式使用 Java——内部类 标签:外部 pre beat rgs 例子 成员 new 抽象方法 person 原文地址:https://www.cnblogs.com/xulinjun/p/14768247.html一、概念
二、成员内部类的定义
class Outer{
class Inner{
}
}
三、成员内部类对象的使用
外部类名.内部类名 变量 = 外部类对象.new 内部类构造方法(参数);
// Person.java
public class Person {
class Heart{
private int rate;
public void beats(){
System.out.println("咚咚咚");
}
}
}
// Test.java
public class Test {
public static void main(String[] args) {
Person.Heart heart = new Person().new Heart();
heart.beats(); // 咚咚咚
}
}
四、内部类访问外部类成员
// Person.java
public class Person {
private String name = "张三";
private int num = 30; // 外部类成员变量
class Heart{
private int rate;
private int num = 20; // 内部类成员变量
public void beats(){
int num = 10; // 内部类方法中的局部变量
System.out.println(num); // 10
System.out.println(this.num); // 20
System.out.println(Person.this.num); // 30
}
}
}
// Test.java
public class Test {
public static void main(String[] args) {
Person.Heart heart = new Person().new Heart();
heart.beats();
}
}
五、匿名内部类
六、匿名内部类的定义格式
new 类名/接口(){
// 如果父类型有抽象方法,需要全部重写
}
七、匿名内部类的使用