在描述事务时,若一个事物内部还包含其他事物,就可以使用内部类来表示这种结构。比如:汽车类Car中包含发动机类Engine,这时,Engine就是可以使用内部类来描述,定义在成员位置。
- package aaa;
-
- public class Person {
-
- private boolean live=true;
-
- class Heart{
- public void jump(){
- if(live)
- System.out.println("还活着。");
- else
- System.out.println("不跳了。");
- }
- }
-
- public boolean isLive() {
- return live;
- }
-
- public void setLive(boolean live) {
- this.live = live;
- }
- }
- package aaa;
-
- import java.util.Scanner;
-
- public class Test {
- public static void main(String[] args){
- Person p = new Person();
- Person.Heart h = p.new Heart();
- h.jump();
- p.setLive(false);
- h.jump();
- }
- }
- package aaa;
-
- import java.util.Scanner;
-
- public class Test {
- public static void main(String[] args){
- // 接口和方法不能创建对象
- // FlyClass flyClass = new FlyClass(){
- // 匿名类,父类接口是FlyClass,实现了FlyClass接口
- // public void fly(){
- // System.out.println("飞起来!");
- // }
- // @Override
-
- // public void down(){
- // System.out.println("下来吧!");
- // }
- // };
- showFly(new FlyCLass(){
- //类似于匿名对象,在匿名对象的基础上加上了匿名创建对象
- public void fly(){
- System.out.println("飞起来!");
- }
- });
- // Fu fu = new Fu();
- // fu.fly();
- // Person p = new Person();
- // Person.Heart h =p.new Heart();
- // h.jump();
- // p.setLive(false);
- // h.jump();
- // Scanner scanner = new Scanner(System.in);
- // int a = scanner.nextInt();
- // System.out.println(scanner.nextInt());
- }
- //创建一个fly()方法
- public static void showFly(FlyCLass f){
- f.fly();
- }
- }
- package aaa;
-
- public interface FlyCLass {
- public void fly();
- }
- package aaa;
-
- import aaa.FlyCLass;
-
- public class Fu implements FlyCLass {
- @Override
- public void fly(){
- System.out.println("飞起来");
- }
- public void down(){
- System.out.println("下来吧");
- }
- }