java学习day13面向对象(六)

抽象类与接口

  • 抽象类
    • 抽象的概念和作用
    • JAVA中抽象类和抽象方法的特点
  • 接口
    • 接口的意义和作用
    • 接口的定义形式
    • 接口和抽象类的区别
    • 接口和接口的关系
    • 接口继承与类继承对比
    • 接口可以实现多继承的原因
    • 类和接口的关系
    • Jdk8之后添加了默认方法和静态方法

抽象类

抽象的概念和作用

概念
现实生活中,没有一个事物或一类事物与之相适应,就是一种空洞,看不见,摸不着,就是在你身边。 Java的抽象就是只声明方法,不去实现具体的内容(去掉方法体)
作用

  1. 进行类型隐藏
  2. 开发项目中创建扩展性很好的架构,优化程序
  3. 抽象---->抽象类 和抽象方法 和接口 —以设计层面来决定,不是用来开发

JAVA中抽象类和抽象方法的特点

①:使用abstract来修饰的类就是抽象类
②: 抽象类是抽象方法的容器
③:一个类中有抽象方法,那么这个类一定是抽象类
如果一个类是一个抽象类,那么不一定有抽象方法
④:抽象类不能够被实例化,主要是用来继承的
⑤:抽象类的子类必须重写父类所有的抽象方法
如果没有重写所有的方法,那么这个子类也还是一个抽象类
⑥:抽象类中可以有构造方法,(目的:创建子类的时候初始化数据)
⑦:抽象方法没有方法体,只有方法声明
⑧:构造方法和final、static方法()不可以修饰为abstract

接口

接口的意义和作用

是一个更加彻底的抽象类
例子:
电脑的Usb接口
可以是u盘实现,鼠标实现

面向接口编程 不能面向对象,从面向对象来衍生出来

接口是一种设计理念

接口的定义形式

[访问权限] interface 接口名 {
公开静态常量列表;
公开抽象方法列表;
}
将 class 或者abstract class 换成 interface

公开静态常量列表:
可以省略public static final
公开抽象方法列表:
可以省略public abstract

接口和抽象类的区别

抽象类	接口

属性 不用限制 Public静态常量
构造方法 可有可无 没有
普通方法 可以有具体方法 必须是public抽象方法
子类 单一继承 多重实现(接口继承接口时为多重继承)

抽象类 接口
接口 不用限制 Public静态常量
构造方法 可有可无 没有
构造方法 可以有具体方法 必须是public抽象方法
子类 单一继承 多重实现(接口继承接口时为多重继承)

接口更多是系统架构设计发挥作用
抽象类更多是代码实现方面发挥作用,实现代码复用

接口和接口的关系

Java接口可以继承多个接口
接口继承接口依然使用关键字extends

接口继承与类继承对比

Java类继承是单继承,接口是多继承

接口可以实现多继承的原因

不允许类多重继承的主要原因是,如果A同时继承B和C,而B和C同时有一个D方法,A无法确定该继承哪一个(钻石问题或者叫“讨嫌的菱形派生”(Dreadful Diamond onDerivation、DDD))
接口全都是抽象方法,不存在实现冲突,继承谁都可以,所以接口可继承多个接口

类和接口的关系

类可以实现多个接口,必需重写所有的抽象方法,如果不重写所有的方法,那么这个类一定是抽象类

Jdk8之后添加了默认方法和静态方法

因为在接口中添加一个方法,会导致老版本接口的所有实现类中断
为了配合lambda表达式,添加了默认方法

你可能感兴趣的:(java)