Java基础00-接口21
1. 接口
1.1 接口概述

1.2 接口的特点

1.3 接口的成员特点

1.3.1 案例:猫和狗

public interface Jumpping {
public void jump();
}
public abstract class AnimalJumpping {
private String name;
private int age;
public void setName(String name){
this.name=name;
}
public String getName(){
return name;
}
public void setAge(int age){
this.age = age;
}
public int getAge(){
return age;
}
public AnimalJumpping(){
System.out.println("抽象类无参构造方法");
}
public AnimalJumpping(String name, int age){
System.out.println("抽象类有参构造方法");
}
public abstract void eat();
}
public class CatExtendsImplementsJumpping extends AnimalJumpping implements Jumpping {
public CatExtendsImplementsJumpping(){
super();
System.out.println("猫的无参构造方法");
}
public CatExtendsImplementsJumpping(String name, int age){
super(name, age);
System.out.println("猫的有参构造方法");
}
public void eat(){
System.out.println("猫吃鱼");
}
public void jump(){
System.out.println("猫跳高");
}
}
public class AnimalDemoExtendsImplementsJumpping {
public static void main(String[] args) {
CatExtendsImplementsJumpping c= new CatExtendsImplementsJumpping();
c.eat();
c.jump();
Jumpping cc= new CatExtendsImplementsJumpping("catA",15);
cc.jump();
AnimalJumpping ccc = new CatExtendsImplementsJumpping("catB",8);
ccc.eat();
ccc.getName();
ccc.getAge();
}
}
输出:
抽象类无参构造方法
猫的无参构造方法
猫吃鱼
猫跳高
抽象类有参构造方法
猫的有参构造方法
猫跳高
抽象类有参构造方法
猫的有参构造方法
猫吃鱼
1.4 类和接口的关系
继承类、实现接口

1.5 抽象类和接口的区别

例子:
门和警报的例子

随着时代的发展,门具备了报警的功能,那该怎么写那?
第一种方案:
将3个功能都放在抽象类里面,
但在这样一来所有继承抽象类的门就都有了报警功能,现实中是不可能所有的门都具备报警功能的,所以这样的写发是不成立的。

第二种方法:
将3种功能都写在接口中,
但是继承接口的门必须都将接口中的方法实现,有的门并不具备报警功能,所以这样写也是不成立的。

最好的设计方法:
因为开和关都是门的基本动作,而报警功能的门附带的功能,并不是每个门都有这样的功能。
所以我们将开和关的都放在抽象类中,门继承的时候就会有开和关的动作,而将报警功能放在接口中,如果有门有报警的功能就实现它的,没有就不实现它。
由此可见,抽象类是对事物的抽象,而接口是对行为的抽象。
抽象类中应该存放的是子类共同的特征,
比如,人都要吃饭,睡觉,
而接口存放的是子类之间不同的特性,
比如,有的人是男人,有的人是女人。

1.5.1 案例

代码思路:

一. 定义3个抽象类有一个接口类:
1. 定义一个说英语的接口:
因为并不是每个人都要学习英语,所以将说英语定义为一个接口。

2. 定义一个抽象人类
每个人都有姓名和年龄的特征和吃饭的行为,所以将他们定义在抽象类中。

3. 定义一个教练抽象类,并继承抽象人类
每个教练都要会教东西,所以他要有teach方法。

4. 定义抽象运动员类,继承人类
每个运动员都要会学习东西,所以他要有study方法。

二. 定义4个具体类:
定义具体篮球教练类,继承教练类
重写教练类的teach(),和人类的eat()方法。
因为教练都必须会教东西,和吃饭。

定义具体乒乓球教练类,继承教练类,实现说英语接口
继承教练类并重写它的方法,同时乒乓球教练也有他的特性,就是会说英语,所以他要实现SpeakEnglish接口。

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

定义具体乒乓球运动员类,继承运动员类,实现说英语接口,构造方法:无参,带参,成员方法,重写吃饭,重写学习,重写说英语
因为和乒乓球有关的人员都要会说英语,所以乒乓球运动员也要实现说英语的接口。

测试类:

运行结果:

以上也可以通过有参构造方法的方式编译运行。
教练对象的创建和使用和以上是一模一样的。
Java基础00-接口21的更多相关文章
- Java基础十--接口
Java基础十--接口 一.接口的定义和实例 /* abstract class AbsDemo { abstract void show1(); abstract void show2(); } 8 ...
- Java基础-面向接口(interface)编程
Java基础-面向接口(interface)编程 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.接口的概念 接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的“类 ...
- 【Java基础】接口和抽象类之间的对比
Java 中的接口和抽象类之间的对比 一.接口 Interface,将其翻译成插座可能就更好理解了.我们通常利用接口来定义实现类的行为,当你将插座上连接笔记本的三角插头拔掉,换成微波炉插上去的时候,你 ...
- Java基础(00)
Java发展史 Java之父:詹姆斯.高斯林(James Gosling). SUN(Stanford University Network 斯坦福大学网络公司)产物. 1995年5月23日,java ...
- JAVA基础之接口
接口 学习完框架之后,整合SSM过程中对于接口的认识加深了许多.根据<java核心技术>这本书进一步研究了一下. 1.概念 java核心技术是这样说的:"在Java程序设计中,接 ...
- Java基础10 接口的继承与抽象类
链接地址:http://www.cnblogs.com/vamei/archive/2013/03/31/2982240.html 作者:Vamei 出处:http://www.cnblogs.com ...
- Java基础10 接口的继承与抽象类(转载)
接口继承 接口继承(inheritance)与类继承很类似,就是以被继承的interface为基础,增添新增的接口方法原型.比如,我们以Cup作为原interface: interface Cup{ ...
- java基础(11):接口、多态
1. 接口 1.1 接口概念 接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的”类”. 接口只描述所应该具备的方法,并没有具体实现,具体的实现由接口的实现类(相当于接口的子类)来完成. ...
- Java 基础 面向对象: 接口(interface )概念 以及接口之练习3 -定义一个接口用来实现两个对象的比较并 判断instanceof是否为同类
接口(interface )概念概念笔记 及测试代码: /** 面向对象: 接口(interface ) 是与类并行的一个概念: * 1.接口可以看成一个特殊的抽象类,它是常量与抽象方法的一个集合 * ...
- Java基础之接口与抽象类及多态、内部类
final关键字 被其修饰的类,不能被继承. 被其修饰的方法,不能被覆盖. 被其修饰的变量,是一个常量,不能被修改,所以定义时必须初始化(和C++的const类似). 一般有final,会搭配stat ...
随机推荐
- TVM性能评估分析(六)
TVM性能评估分析(六) Figure 1. The workflow of development PC, compile, deploy to the device, test, then mo ...
- 通过 DLPack 构建跨框架深度学习编译器
通过 DLPack 构建跨框架深度学习编译器 深度学习框架,如Tensorflow, PyTorch, and ApacheMxNet,快速原型化和部署深度学习模型提供了强大的工具箱.不幸的是,易用性 ...
- TSR交通标志检测与识别
TSR交通标志检测与识别 说明: 传统图像处理算法的TSR集成在在ARM+DSP上运行,深度学习开发的TSR集成到FPGA上运行. 输入输出接口 Input: (1)图像视频分辨率(整型int) (2 ...
- 如何为嵌入式应用选择适当的SSD
如何为嵌入式应用选择适当的SSD Selecting the right SSD for evolving embedded applications 变革涉及技术的每一个要素,闪存也不例外.价格下跌 ...
- Docker-compose搭建ELK环境并同步MS SQL Server数据
前言 本文作为学习记录,供大家参考:一次使用阿里云(Aliyun)1核2G centos7.5 云主机搭建Docker下的ELK环境,并导入MS SQL Server的商品数据以供Kibana展示的配 ...
- robotframework常用关键字
robotframework关键字 可以将关键字看作是处理数据的方法.robotframework的关键字和测试数据组成了测试用例. robotframework关键字包括系统关键字和用户关键字.用户 ...
- 【NX二次开发】Block UI 通过浏览选择文件
属性说明 属性 类型 描述 常规 BlockID String 控件ID Enable Logical 是否可操作 Group ...
- NX二次开发-从一个坐标系到另一个坐标系的转换
函数:UF_MTX4_csys_to_csys().UF_MTX4_vec3_multiply() 函数说明:从一个坐标系统到另一个坐标系统的转换.如下图红色坐标系下有个红色的点,将红色的点转到绿色的 ...
- Zab协议 (史上最全)
文章很长,建议收藏起来,慢慢读! 疯狂创客圈为小伙伴奉上以下珍贵的学习资源: 疯狂创客圈 经典图书 : <Netty Zookeeper Redis 高并发实战> 面试必备 + 大厂必备 ...
- 【题解】覆盖问题 BZOJ1052 HAOI2007 二分
题目描述 某 人在山上种了N棵小树苗.冬天来了,温度急速下降,小树苗脆弱得不堪一击,于是树主人想用一些塑料薄膜把这些小树遮盖起来,经过一番长久的思考,他决定用 3个LL的正方形塑料薄膜将小树遮起来.我 ...