抽象类

抽象类概述

在java中,一个没有方法体的方法应该定义为抽象方法,而类中如果有抽象方法·,该类必须定义为抽象类
一个方法,要么有方法体,要么就定义成抽象的

定义成抽象的(抽象的就不能创建对象,即不能Animal a = new Animal ( ) ;
image.png

抽象类特点

抽象类可以参照多态的形式创建对象
抽象类
image.png
猫类
image.png
测试类
image.png

总结:

  1. 抽象类和抽象方法必须使用abstract关键字修饰

public abstract class 类名 {}
public abstract void eat () ;

  1. 抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类
  2. 抽象类不能实例化

如何实例化?参照多态的方式,通过子类对象实例化,这叫抽象类多态

  1. 抽象类的子类

要么重写抽象类中的所有抽象方法
要么是抽象类(如下图)
image.png

抽象类的成员特点

抽象类可以有构造方法,构造方法用于子类访问父类数据的初始化
非抽象方法,可以提高代码的复用性
image.png
父类中的抽象方法是限定子类必须做的事情

总结:

  1. 成员变量

可以是变量
也可以是常量

  1. 构造方法

有构造方法,但是不能实例化
作用:用于子类访问父类数据的初始化

  1. 成员方法

可以有抽象方法:限定子类必须完成某些动作
也可以有非抽象方法:提高代码复用性

案例

猫和狗

image.png
动物类
image.png
image.png
猫类
image.png
狗类
image.png
测试类
image.png

接口

接口概述

接口就是一种公共的规范标准,只要符合规范标准,大家都可以通用
java中的接口更多的体现在对行为的抽象

接口的特点

  1. 关键字:interface

image.png
image.png

  1. 类实现接口,用implements

image.png

  1. 接口也是一个抽象内容,不能被实例化。主要是对行为进行抽象,本身也是一个抽象的内容。

image.png

  1. 可以提供多态的方式实例化

image.png
接口的实例化也采用多态的形式,用它的实现类对象来进行实例化


image.png
image.png
抽象类在实现接口的时候,可以不重写接口里面的方法,子类要继承它的时候,还得去重写里面的抽象方法

总结:

  1. 接口用关键字interface修饰

public interface 接口名 {}

  1. 类实现接口用implements表示

public class 类名 implements 接口名 {}

  1. 接口不能实例化

要实现实例化:参照多态方式,通过实现类对象实例化,,这叫接口多态。
多态的形式:具体类多态,抽象类多态,接口多态。
多态的前提:有继承或者实现关系;有方法重写;有父(类/接口)引用指向(子/实现)类对象

  1. 接口的实现类

要么重写接口中的所有抽象方法
要么是抽象类

接口里面的员特点

接口
image.png
实现类
image.png
测试类
image.png

  1. 显示被final修饰

image.png
接口中的成员变量默认就是被final修饰的,即没有成员变量,可以看出常量(因为是被final修饰)
默认修饰符是:public static final int xxx = xx,所以可以直接写int xxx = xx;

  1. 接口里面不能有构造方法(对行为进行抽象,所以是没有具体存在的)

image.png

  1. 接口里面是不能有非抽象方法的

接口里的成员方法只能是抽象的
image.png
改成
image.png
image.png

  1. 接口里面没有写public abstract也是默认的

image.png

总结:

  1. 成员变量

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

  1. 构造方法

接口没有构造方法,因为接口主要是对行为进行抽象的,是没有具体存在
一个类如果没有父类,默认继承自Object类

  1. 成员方法

只能抽象方法
默认修饰符:public abstract
关于接口中的方法,JDK8和JDK9中有一些特性,看后面

案例

猫和狗(接口版)

image.png
动物类
image.pngimage.png
猫类
image.png
接口
image.png
测试类
image.png
常用这个,因为它里面有最多的方法

类和接口的关系

  1. 类和类的关系

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

  1. 类和接口的关系

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

  1. 接口和接口的关系

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

image.png
image.png

抽象类和接口的区别

image.png
image.png
抽象类是对事务的抽象,而接口是对行为的抽象

案例

运动员和教练

image.png
image.png