• Tidak ada hasil yang ditemukan

幻灯片 1

N/A
N/A
Protected

Academic year: 2023

Membagikan "幻灯片 1"

Copied!
15
0
0

Teks penuh

(1)

接口

(2)

1. 接口

1.1 接口概述

(3)

1. 接口

1.1 接口概述

(4)

1. 接口

1.1 接口概述

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

(5)

1. 接口

1.2 接口的特点

 接口用关键字interface修饰 public interface 接口名 {}

 类实现接口用implements表示

public class 类名 implements 接口名 {}

 接口不能实例化

接口如何实例化呢?参照多态的方式,通过实现类对象实例化,这叫接口多态。

多态的形式:具体类多态,抽象类多态,接口多态。

多态的前提:有继承或者实现关系;有方法重写;有父 (类/接口 ) 引用指向 (子/实现 ) 类对象

 接口的子类

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

(6)

1. 接口

1.3 抽象类的成员特点

 成员变量 只能是常量

默认修饰符:public static final

 构造方法

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

 成员方法

只能是抽象方法

默认修饰符:public abstract

关于接口中的方法,JDK8JDK9中有一些新特性,后面再讲解

(7)

1. 接口

案例:猫和狗

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

并在测试类中进行测试 思路:

①定义接口(Jumpping) 成员方法:跳高();

②定义抽象动物类(Animal)

成员变量:姓名,年龄;构造方法:无参,带参;成员方法:get/set方法,吃饭();

③定义具体猫类(Cat),继承动物类,实现跳高接口

构造方法:无参,带参;成员方法:重写吃饭(){…},重写跳高方法(){…}

④定义狗类(Dog) ,继承动物类,实现跳高接口

构造方法:无参,带参;成员方法:成员方法:重写吃饭(){…},重写跳高方法(){…}

⑤定义测试类(AnimalDemo),写代码测试

(8)

1. 接口

1.4 类和接口的关系

 类和类的关系

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

 类和接口的关系

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

 接口和接口的关系

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

(9)

1. 接口

1.5 抽象类和接口的区别

 成员区别

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

接口 常量;抽象方法

 关系区别

类与类 继承,单继承

类与接口 实现,可以单实现,也可以多实现 接口与接口 继承,单继承,多继承

 设计理念区别

抽象类 对类抽象,包括属性、行为 接口 对行为抽象,主要是行为

(10)

1. 接口

1.5 抽象类和接口的区别

门和警报的例子

门:都有open()和close()两个动作,这个时候,我们可以分别使用抽象类和接口来定义这个抽象概念

//抽象类

public abstract class Door { public abstract void open();

public abstract void close();

}

//接口

public interface Door { void open();

void close();

}

(11)

1. 接口

1.5 抽象类和接口的区别

门和警报的例子

门:都有open()和close()两个动作,这个时候,我们可以分别使用抽象类和接口来定义这个抽象概念

//抽象类

public abstract class Door { public abstract void open();

public abstract void close();

public abstract void alarm();

}

//接口

public interface Door { void open();

void close();

void alarm();

}

(12)

1. 接口

1.5 抽象类和接口的区别

public interface Alram { void alarm();

}

public abstract class Door { public abstract void open();

public abstract void close();

}

public class AlarmDoor extends Door implements Alarm { public void oepn() {

//....

}

public void close() { //....

}

public void alarm() { //....

} }

在这里,我们再次强调抽象类是对事物的抽象,而接口是对行为的抽象

(13)

1. 接口

案例:运动员和教练

需求:我们现在有乒乓球运动员和篮球运动员,乒乓球教练和篮球教练。为了出国交流,跟乒乓球相关的人员都需要

学习英语。请用所学知识分析,这个案例中有哪些具体类,哪些抽象类,哪些接口,并用代码实现

抽象类 姓名,年龄

吃饭();

抽象类 姓名,年龄

吃饭();

抽象类运动员

学习();

抽象类运动员

学习();

抽象类教练

();

抽象类教练

();

具体类 篮球运动员

具体类 篮球运动员

具体类 乒乓球运动员

具体类 乒乓球运动员

具体类 乒乓球教练类

具体类 乒乓球教练类

具体类 篮球教练类

具体类 篮球教练类 接口

学习英语 接口 学习英语

分析:从具体到抽象 乒乓球运动员 篮球运动员 乒乓球教练 篮球教练 实现:从抽象到具体

使用:使用的是具体的类的对象

(14)

1. 接口

案例:运动员和教练

需求:我们现在有乒乓球运动员和篮球运动员,乒乓球教练和篮球教练。为了出国交流,跟乒乓球相关的人员都需要

学习英语。请用所有知识分析,这个案例中有哪些具体类,哪些抽象类,哪些接口,并用代码实现

思路:

①定义说英语接口 成员方法:说英语();

②定义抽象人类 成员变量:姓名,年龄;构造方法:无参,带参;成员方法:get/set方法,吃饭();

③定义抽象教练类,继承人类 构造方法:无参,带参;成员方法:教();

④定义抽象运动员类,继承人类 构造方法:无参,带参;成员方法:学习();

⑤定义具体篮球教练类,继承教练类 构造方法:无参,带参;成员方法:重写吃饭(){…},重写教(){…}

⑥定义具体乒乓球教练类,继承教练类,实现说英语接口

构造方法:无参,带参;成员方法:重写吃饭(){…},重写教(){…},重写说英语(){…}

⑦定义具体篮球运动员类,继承运动员类 构造方法:无参,带参;成员方法:重写吃饭(){…},重写学习(){…}

⑧定义具体乒乓球运动员类,继承运动员类,实现说英语接口

构造方法:无参,带参;成员方法:重写吃饭(){…},重写学习(){…},重写说英语(){…}

⑨定义测试类,写代码测试

(15)

Referensi

Dokumen terkait

我会评价 我会运用大小对比的方法画画。□ 看谁画的大人国、小人国的作品更有趣。 学生作品 艺术实践 发挥你的想象力,创作一幅有趣的大人国或小人国 的作品,并把画面中的故事给同学们讲一讲。 我爱探究 左 边 的 作 品 是怎样运用对比 的方法表现大与 小的?作品给了 我们哪些启发? 我能创新 我能发挥创意,运用大小对比、夸张变 形等手法来创作作品。