1.6Java-接口、抽象类

目录

1.6.1接口概述

1.6.1.1为什么引入接口

1.6.1.1接口定义

1.6.2接口定义格式

 1.6.3接口的使用

1.6.4接口成员的特点

1.6.4.1 成员变量

1.6.4.2 成员方法

1.6.4.3 构造方法

1.6.5 抽象类

1.6.5.1 抽象方法与抽象类

1.6.5.2 抽象类格式

1.6.6 类和接口的关系

1.6.7 抽象类和接口的区别

1.6.8 JDK8开始接口新增的方法


1.6.1接口概述

1.6.1.1为什么引入接口

狗:吃,睡,游泳

青蛙:吃,睡,游泳

兔子,吃,睡

如果父类的动物定义吃,睡,游泳,兔子继承动物,就代表兔子也可以调用游泳,这个显然不对,因为兔子根本不能游泳。为了解决这类问题,引入了接口,可以理解:接口是一种行为(规则)

1.6.1.1接口定义

接口,是Java语言中一种引用类型,是方法的集合,如果说类的内部封装了成员变量、构造方法和成员方法,那么接口的内部主要就是封装了方法(功能),包含抽象方法 (JDK7及以前) , 默认方法和静态方法(JDK8)私有方法(JDK9)。

1.6.2接口定义格式

接口用关键字interface修饰

public interface 接口名 {

 1.6.3接口的使用

接口是不能创建对象,必须有实现类才能使用,类实现接口用implements表示

public class 类名 implements 接口名 {

}

 注意: 接口的实现类必须重写接口中的所有的抽象方法,要么该类是一个抽象类

1.6.4接口成员的特点

1.6.4.1 成员变量

只能是常量,默认修饰符:public static final

1.6.4.2 成员方法

只能是抽象方法,默认修饰符:public abstract

1.6.4.3 构造方法

没有,因为接口主要是扩展功能的,而没有具体存在

1.6.5 抽象类

1.6.5.1 抽象方法与抽象类

抽象方法

  • 将共性的行为(方法)抽取到父类之后,由于每一个子类的执行的内容时不一样,所以在父类中不能确定具体的方法体,该方法就可以定义为抽象方法

抽象类

  • 如果一个类中存在抽象方法,那么该类就必须声明为抽象类

1.6.5.2 抽象类格式

格式

  • 抽象方法格式:

Public abstract 返回值类型 方法名(参数列表)

  • 抽象类定义格式:

Public abstract class 类名{}

// 先定义抽象类,里面有一个抽象方法
public abstract class Area{
    // 定义抽象方法
    abstract void area();
}
// A类继承抽象类
public class A extends Area{
    @Override
    void area() {
        System.out.println("我是A");
    }
}

}

注意事项

  • 抽象类不能实例化

  • 抽象类不一定有抽象方法,有抽象方法的类一定是抽象类

  • 可以有构造方法

  • 抽象类的子类

    • 要么重写抽象类中的所有的抽象方法

    • 要么是抽象类(但是这个还是要创建一个子子类继承这个抽象子类)

1.6.6 类和接口的关系

  • 类与类的关系

    继承关系,只能单继承,但是可以多层继承

  • 类与接口的关系

    实现关系,可以单实现,也可以多实现,还可以在继承一个类的同时实现多个接口

  • 接口与接口的关系

    继承关系,可以单继承,也可以多继承

1.6.7 抽象类和接口的区别

  • 成员区别

    • 抽象类

      变量,常量;有构造方法;有抽象方法,也有非抽象方法

    • 接口

      常量;抽象方法

  • 关系区别

    • 类与类

      继承,单继承

    • 类与接口

      实现,可以单实现,也可以多实现

    • 接口与接口

      继承,单继承,多继承

  • 设计理念区别

    • 抽象类

      为了继承而来,让子类强制重写父类中的抽象方法

    • 接口

      对行为抽象,主要是行为

1.6.8 JDK8开始接口新增的方法

  • JDK7以前:接口中只能定义抽象方法

  • JDK8新特性:接口中可以定义有方法体的方法(默认,静态)

  • JDK9新特性:接口可以定义私有方法

简单了解一下,后面会详细讲解。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老李头喽

高级内容,进一步深入JA领域

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值