接口

 

接口概述

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

 

接口特点

1、接口用关键字interface修饰

2、类实现接口用implements表示。格式如下 public class 类名 implements 接口名 {}

3、接口不能实例化 解决写法: 参照多态的方式,通过实现类对象实例化,这叫接口多态

多态的形式: 具体类多态(几乎不常用)、抽象类多态、接口多态 多态的前提: 有继承或者有实现关系; 有方法重写; 有父类引用指向子类对象或有父接口引用指向实现类对象

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

 

接口特点的练习

 

接口的成员特点

成员变量: 1、只能是常量(因为有默认修饰符) 2、默认修饰符:public static final

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

成员方法: 1、只能是抽象方法,不能是非抽象的 2、默认修饰符:public abstract

 

接口成员特点的练习

 

猫和狗_接口版

需求: 对猫和狗进行训练,它们就可以跳高了,这里加入了跳高功能。请采用抽象类和接口来实现猫和狗案例

思路如下:

1、定义接口 成员方法: 跳高(); 注意跳高这个方法是抽象的

2、定义抽象动物类 成员变量: 姓名,年龄; 构造方法: 无参,带参 成员方法: get和set方法,吃饭(); 注意跳高这个方法是抽象的

3、定义具体猫类,继承动物类,实现跳高接口 构造方法: 无参,带参 成员方法: 重写吃饭方法,重写跳高方法

4、定义狗类,继承动物类,实现跳高接口 构造方法: 无参,带参 成员方法: 重写吃饭方法,重写跳高方法

5、定义测试类,并测试

注意这里只用代码演示猫类的,狗类的同理就不重复写了

 

猫和狗_接口版的练习

 

类和接口的关系

类和类的关系: 继承关系。但是可以多层继承

类和接口的关系: 实现关系。可以单实现也可以多实现,还可以在在继承一个类的同时实现多个接口(后半句话待会代码演示)

接口和接口的关系: 继承关系。可以单继承,也可以多继承

 

类和接口关系的练习

 

抽象类和接口的区别

成员区别: 抽象类: 可以有常量、变量、构造方法、抽象方法、非抽象方法 接口: 只能有常量、抽象方法

关系区别: 类与类: 继承,且只能单继承 类与接口: 实现,可以单实现也可以多实现 接口与接口: 继承: 可以单继承也可以多继承

设计理念区别: 抽象类: 对类抽象,包括属性、行为 接口: 对行为抽象,主要是行为

 

运动员和教练案例

需求: 我们现在有乒乓球运动员和篮球运动员、乒乓球教练和篮球教练。为了出国交流,跟乒乓球相关的人员都需要学习英语。 请分析案例中有哪些具体类、抽象类、接口。并用代码实现

分析(具体的,所以下面都是具体的类): 1、乒乓球运动员 2、篮球运动员 3、乒乓球教练 4、篮球教练

将1和2提取出一个抽象的运动员类,里面有一个学习()抽象方法 将3和4提取出一个抽象的教练类,里面有一个教()抽象方法 将运动员类和教练类提取出一个抽象的人类,里面有姓名、年龄的成员变量和吃饭()的成员方法 定义一个接口,叫学习英语。让1和3实现这个接口

注意: 实现时我们需要从抽象到具体,使用时我们需要使用具体的类的对象,因为里面的内容最多

分析完毕我们来讲一下思路: 1、定义说英语接口。里面包含成员方法即说英语() 2、定义抽象人类。里面包含成员变量即姓名、年龄。包含构造方法即无参、包括带参。包括成员方法即get和set方法、吃饭() 3、定义抽象教练类,继承人类。里面包含构造方法即无参、带参。包括成员方法即教() 4、定义抽象运动员类,继承人类。里面包含构造方法即无参、带参。包括成员方法即学习() 5、定义具体篮球教练类,继承教练类。里面包含构造方法即无参、带参。包括成员方法即重写吃饭方法和重写教方法 6、定义具体乒乓球教练类,继承教练类,实现说英语接口。里面包含构造方法即无参、带参。包括成员方法即重写吃饭方法和重写教方法和重写说英语 7、定义具体篮球运动员类,继承运动员类。里面包含构造方法即无参、带参。包括成员方法即重写吃饭方法和重写学习方法 8、定义具体乒乓球运动员类,继承运动员类,实现说英语接口。里面包含构造方法即无参、带参。包括成员方法即重写吃饭方法和重写学习方法和重写说英语方法 9、定义测试类并测试