定义的位置 : 类中方法外
创建成员内部类对象格式 : 外部类名.内部类名 对象名 = new 外部类名().new 内部类名(参数);
package com.itheima.innerclass_demo.member_innerclass;
// 外部类
public class Person {
// 成员内部类
public class Heart {
// 频率变量
private int rate;
// 跳动方法
public void beats() {
System.out.println("咚咚咚!");
}
}
}
class Test {
public static void main(String[] args) {
// 创建内部类对象
Person.Heart heart = new Person().new Heart();
// 调用内部类中的方法
heart.beats();
}
}
package com.itheima.innerclass_demo.member_innerclass;
public class Person {
private String name = "张三";
private int num = 10;
// 成员内部类
public class Heart {
int num = 100;
// 频率
private int rate;
// 跳动
public void beats() {
System.out.println("咚咚咚!");
}
// 调用外部类的成员
public void show(){
int num = 1000;
System.out.println(Person.this.name);
System.out.println(num);// 1000 就近原则
System.out.println(this.num);// 100
System.out.println(Person.this.num);// 10
}
}
}
class Test {
public static void main(String[] args) {
Person.Heart heart = new Person().new Heart();
heart.beats();
heart.show();
}
}
public interface Flyable {
void fly();
}
public class Test1 {
public static void main(String[] args) {
new Flyable(){
@Override
public void fly() {
System.out.println("我在学习JAVA");
}
}.fly();
// 作为方法的参数传递
showFlyable(
new Flyable(){
@Override
public void fly() {
System.out.println("作为方法的参数传递");
}
}
);
// 作为方法的返回值类型
getFlyable().fly();
}
public static void showFlyable(Flyable flyable) {
flyable.fly();
}
// 作为方法的返回值类型
public static Flyable getFlyable(){
return new Flyable() {
@Override
public void fly() {
System.out.println("作为方法的返回值类型");
}
};
}
}
程序运行后的结果如下:
我在学习JAVA
作为方法的参数传递
作为方法的返回值类型