内部类

2.1 什么是内部类
所谓的内部类就是在一个类A内部定义另外一个类B,此时类B内部类,类A外部类   
2.2 成员内部类以及其特点

/**

  • 人类,外部类
    */
    public class Person {
    int age;
    String name;
    //内部类
    //a.成员内部类(心脏类)
    class Heart{
    int jumpCount; //心跳次数

     public void jump(){
         System.out.println("心脏砰砰跳~~");
         //在成员内部类中可以无条件访问外部类的任何成员
         System.out.println(age);
         System.out.println(name);
         show();
     }
    

    }

    public void show(){
    //b.局部内部类(了解)
    class xxx{

     }
    

    }
    }
    成员内部类有两个点:
    a.在成员内部类中可以无条件访问外部类的任何成员
    b.在测试类中创建成员内部类对象,该怎么写呢???
    public class TestDemo {
    public static void main(String[] args) {
    //1.创建外部类对象
    Person p1 = new Person();
    //2.创建内部类对象
    //Java规定,想要创建内部类的对象,必须先创建外部类的对象
    //然后通过外部类对象才能创建内部类对象
    //格式:
    // Person.Heart 对象名 = new Person().new Heart();
    Person.Heart h = new Person().new Heart();
    //可以写这么写
    Person.Heart h1 = p1.new Heart();
    }
    }

2.3 内部类编译之后的字节码文件
内部类编译之后的字节码文件名:
		外部类名$内部类名.class
比如我们案例中的Heart类,编译之后:
		Person$Heart.class
2.4 匿名内部类[重点]

//a.定义接口
public interface Flyable {
public abstract void fly();
}

//b.创建实现类 实现 接口
public class Bird implements Flyable{
//c.重写接口的所有抽象方法
@Override
public void fly() {
System.out.println(“我想要飞,却飞不高…”);
}
}

/**

  • 需求: 定义接口,要求创建一个该接口的实现类对象,测试该对象

  • a.定义接口

  • b.创建实现类 实现 接口

  • c.重写接口的所有抽象方法

  • d.测试类中创建实现类对象

  • e.调用实现类的对象方法
    */
    public class TestDemo {
    public static void main(String[] args) {
    //d.测试类中创建实现类对象
    Bird b = new Bird();
    //e.调用实现类的对象方法
    b.fly();

     //匿名内部类
     Flyable ff = new Flyable(){
         @Override
         public void fly() {
             System.out.println("我想要飞,却飞不高...");
         }
     };
     ff.fly();
    

    }
    }

总结匿名内部类的格式:
父类名/接口名 对象名 = new 父类名/接口名(){
//重写父类或者接口中所有抽象方法
};

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值