9.抽象类与接口

抽象类

使用场景

  1. 抽象类:说不清楚,道不明白的类就是抽象类

  2. 抽象方法:说不清楚,道不明白的方法就是抽象方法

  3. 设定抽象出来的框架,可以给子类继承西区,编写具体方法内容

abstract关键字

  1. abstract : 抽象的

  2. 被abstract修饰的方法就做抽象方法:

    a. 没有方法体

    b. 必须存在于抽象类中

    c. 在抽象类中可以没有抽象方法

  3. 被abstract修饰的类叫做抽象类

语法

  1. 抽象类名: public abstract class 类名{ }

  2. 抽象方法: abstract 返回值类型 方法名( ); //不存在方法体

  3. 可以有默认的方法实现

  4. 除了你不能实例化抽象类之外,它和普通Java类没有任何区别

注意

  1. 抽象类不能被实例化|创建对象

  2. 抽象类如果要使用必须要被继承,抽象方法必须被重写

  3. 抽象方法必须要定义在抽象类中

  4. 抽象类中可以有具体的方法,可以有抽象方法

  5. 抽象类的使用:

    a. 抽象子类:按需重写抽象方法+按需新增方法–>不能实例化

    b. 具体子类:必须重写所有的抽象方法+按需新增–>可以实例化

  6. 抽象方法一旦被重写过,后续的子类可以不再重写了

  7. abstract关键字不能和private,final,static和native一起使用

  8. 抽象方法可以有public、protected和default这些修饰符

构造器

可以有构造器,并且让子类继承和创建对象

接口

接口介绍

  1. 接口是特殊的抽象类,和java类是完全不同的类型

  2. 定义接口使用interface关键字,不再是class 例;public interface 类名{ }

  3. 在jdk1.7之前只能存在成员方法(公共的抽象)和静态变量(公共的 最终的
    静态变量)

成员方法的定义

  1. public abstract 返回值类型 | void 方法名();

  2. 修饰符public abstract默认的,可以选择性的省略

变量定义

  1. public static final 数据类型 变量名=变量值;

  2. public static final的修饰符可以被省略,但是默认存在

注意

  1. 接口不能实例化

  2. 抽象的方法必须被重写

  3. 接口可以可有继承多个接口,但是接口不可以实现接口

  4. 类可以实现接口,但是类不可以继承接口
    使用implements关键字实现接口,实现可继承的作用一样

  5. 类只能单继承,但是接口可以多实现

  6. 类要同时实现接口和继承类,先继承后实现 例; 先 extends 父类 implements
    接口1,接口2,接口3

  7. 实现接口要重写接口中的所有的抽象方法

  8. 接口的实现类;

    a. 抽象实现类

    b. 具体的实现类

  9. 接口中不可以存在构造器,但是抽象类中可以存在

接口的作用

  1. 多实现,使用方便

  2. 定义规范,规范程序员的开发规范

  3. 降低耦合度:高内聚低耦合

接口和抽象类之间如何选择

  1. 一般都使用接口

  2. 如果需要有具体的方法的实现,可以选择抽闲类,因为抽闲类中可以存在抽闲方法和具体方法

  3. 如果想要创建父类的对象使用,那就使用普通父类

JDK1.8后新加入的两种可以存在的方法,静态方法和默认方法

  1. 静态方法:可以通过接口名字.方法名()使用

  2. 默认方法:被default在接口中的修饰的方法为默认方法,可以存在方法体,只能通过子类的对象使用

  3. 在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Super_XiongDa/article/details/90143029