Day10-2.接口、匿名内部类

1 接口

  1. 概念:
    生活中的角度:接口就表示一类规则,想要使用这个接口就需要遵守接口中定义的规则
    Java语言的角度:接口就是用来定义抽象方法的一个特殊类型
  2. 特点:
    (1)定义一个接口,使用一个新的关键字:interface 类名
    (2)接口和抽象方法的关系:
    接口中只能定义抽象方法,不能定义非抽象方法
    (3)接口不能实例化(不能创建对象)
    (4)类和接口之间不是继承关系,而是实现关系:implements
    类型实现一个接口之后,接口中定义的内容,类型也可以继承
    (5)接口的实现类有两条分支:
              如果一个类型实现接口之后,重写了接口中继承的所有抽象方法,那么这个类型就是一个普通类
              如果一个类型实现一个接口之后,没有重写完接口中继承的所有抽象方法,那么这个类型只能定义为一个抽象类
    (6)接口要使用,也需要先编译后运行

1.1 接口的成员特点

  1. 接口中不存在变量,只能存在常量
    如果在接口中定义了一个变量,或者定义了一个常量,会默认在常量或者变量前加:
    public static final
  2. 接口中只能定义抽象方法,不能定义非抽象方法
    在接口中定义的抽象方法,可以将关键字abstract隐藏
  3. 接口中需要定义构造方法吗?
    不需要。
    接口中不能定义变量(属性),所以不需要对属性进行初始化,不需要定义构造方法

1.2 类与类、类与接口、接口与接口之间的关系

  1. 类与类之间:继承关系:extends
    特点:支持单继承,支持多层继承 ,不支持多继承

  2. 类与接口之间:实现关系:implements
    特点:可以单实现、可以多实现、不可以多层实现
    一个类型不仅可以同时实现多个接口,还可以继承其他父类
    格式:类型A extends 类型B implements 接口C{}

  3. 接口和接口之间:继承关系 extends
    特点:可以单继承、可以多继承、可以多层继承

1.3 接口和抽象类区别

  1. 相同点:可以定义抽象方法
  2. 不同点:
    (1)抽象类中可以定义非抽象方法;接口不能定义非抽象方法
    (2)抽象类中可以定义变量;接口中不能定义变量
    (3)抽象类也需要定义构造方法;接口不需要定义构造方法
    (4)抽象类本质是一个类型,其他类只能继承一个抽象类
    接口本质是一个接口,其他类型可以实现多个接口
  3. 定义的方式:
    如果类型中要定义每一个子类都共有的内容,一般定义为抽象类
    如果类型中要定义实现类特有的方法,一般提取到接口中

猴子:姓名 性别 吃饭(吃香蕉) 睡觉 爬树
猫:姓名 性别 吃饭(吃鱼) 睡觉 爬树
狗:姓名 性别 吃饭(吃肉) 睡觉
抽取一个抽象父类:姓名 性别 吃饭(抽象) 睡觉
抽取一个接口:爬树

2 匿名内部类

  1. 概述:本质也是一个类型,只不过没有名字的定义
    属于一个局部内部类
  2. 格式:
接口类型  接口引用   =   new  接口名(){
       接口抽象方法的重写;
}

代码

package demos_inner;

public class Demo {
    public static void main(String[] args) {
        //使用匿名内部类的方式,创建了一个接口的实现类对象
        MyInter2 m2 = new MyInter2(){
            public void play(){
                System.out.println("玩游戏");
            }
            public void eat(){
                System.out.println("吃饭");
            }
        };
        m2.play();

        //使用匿名内部类的方式,创建一个抽象类的子类对象
        //名字没有单独定义,使用的是抽象父类的名字
        //如果要使用匿名内部类,不能单独定义,必须和new一起使用,直接创建对象
        ABC abc = new ABC(){
            //对类中抽象方法的重写
            public void show(){
                System.out.println("抽象类的子类对象调用方法");
            }
        };
        //编译看左边,运行看右边
        abc.show();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值