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的更多相关文章

  1. Java基础十--接口

    Java基础十--接口 一.接口的定义和实例 /* abstract class AbsDemo { abstract void show1(); abstract void show2(); } 8 ...

  2. Java基础-面向接口(interface)编程

    Java基础-面向接口(interface)编程 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.接口的概念 接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的“类 ...

  3. 【Java基础】接口和抽象类之间的对比

    Java 中的接口和抽象类之间的对比 一.接口 Interface,将其翻译成插座可能就更好理解了.我们通常利用接口来定义实现类的行为,当你将插座上连接笔记本的三角插头拔掉,换成微波炉插上去的时候,你 ...

  4. Java基础(00)

    Java发展史 Java之父:詹姆斯.高斯林(James Gosling). SUN(Stanford University Network 斯坦福大学网络公司)产物. 1995年5月23日,java ...

  5. JAVA基础之接口

    接口 学习完框架之后,整合SSM过程中对于接口的认识加深了许多.根据<java核心技术>这本书进一步研究了一下. 1.概念 java核心技术是这样说的:"在Java程序设计中,接 ...

  6. Java基础10 接口的继承与抽象类

    链接地址:http://www.cnblogs.com/vamei/archive/2013/03/31/2982240.html 作者:Vamei 出处:http://www.cnblogs.com ...

  7. Java基础10 接口的继承与抽象类(转载)

    接口继承 接口继承(inheritance)与类继承很类似,就是以被继承的interface为基础,增添新增的接口方法原型.比如,我们以Cup作为原interface:  interface Cup{ ...

  8. java基础(11):接口、多态

    1. 接口 1.1 接口概念 接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的”类”. 接口只描述所应该具备的方法,并没有具体实现,具体的实现由接口的实现类(相当于接口的子类)来完成. ...

  9. Java 基础 面向对象: 接口(interface )概念 以及接口之练习3 -定义一个接口用来实现两个对象的比较并 判断instanceof是否为同类

    接口(interface )概念概念笔记 及测试代码: /** 面向对象: 接口(interface ) 是与类并行的一个概念: * 1.接口可以看成一个特殊的抽象类,它是常量与抽象方法的一个集合 * ...

  10. Java基础之接口与抽象类及多态、内部类

    final关键字 被其修饰的类,不能被继承. 被其修饰的方法,不能被覆盖. 被其修饰的变量,是一个常量,不能被修改,所以定义时必须初始化(和C++的const类似). 一般有final,会搭配stat ...

随机推荐

  1. 重型车辆盲区行为检查Behaviours – Heavy Vehicle Blind Spots

    重型车辆盲区行为检查Behaviours – Heavy Vehicle Blind Spots VISIBILITY AROUND HEAVY VEHICLES A blind spot is an ...

  2. L3级自动驾驶

    L3级自动驾驶 2020年开年 3月9日,工信部在其官网公示了<汽车驾驶自动化分级>推荐性国家标准报批稿,并拟于2021年1月1日开始实施. 按照中国自身标准制定的自动驾驶分级标准,在千呼 ...

  3. 一、部署监控服务器--安装LNMP环境

    1.要求: 本案例要求部署-台Zabbix监控服务器, -台被监控主机,为进一步执行具体的监控任务做准备:1.安装LNMP环境2.源码安装Zabbix3.安装监控端主机,修改基本配置4.初始化Zabb ...

  4. 【NX二次开发】创建扫描特征

    扫描特征相关函数: 创建扫描特征的相关函数: 1.UF_MODL_create_extrude_trim_opts 拉伸 2.UF_MODL_create_extrude_trim_opts1 拉伸 ...

  5. RobotFramework + Python 自动化入门 一 (从这里开始)

    一.环境搭建 1. 安装Python Python3会自动配置path,安装pip工具(python包安装和管理工具) 2. 安装robotframework library cmd窗口安装命令: p ...

  6. 从0到1用react+antd+redux搭建一个开箱即用的企业级管理后台系列(基础篇)

    背景 ​ 最近因为要做一个新的管理后台项目,新公司大部分是用vue写的,技术栈这块也是想切到react上面来,所以,这次从0到1重新搭建一个react项目架子,需要考虑的东西的很多,包括目录结构.代码 ...

  7. 时光卷轴,Microsoft大事记

    Our mission is to empower every person and every organization on the planet to achieve more. 2021年6月 ...

  8. 26、linux下安装MongoDB

    26.1.MongoDB介绍: 1.什么是MongoDB: MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统.在高负载的情况下,添加更多的节点,可以保证服务器性能. Mo ...

  9. 97、配置yum源仓库服务器

    (服务端(双(外,内)网卡)--客户端(内网)) YUM主要用于自动安装.升级rpm软件包,它能自动查找并解决rpm包之间的依赖关系.要成功的使用YUM工具安装更新软件或系统, 就需要有一个包含各种r ...

  10. POJ 2947 2947 Widget Factory 高斯消元

    给出组件的数量n,给出记录的数量m(n就是变元数量,m是方程数量).每一个记录代表一个方程,求每个组件的生产天数. 高斯消元即可 #include <cstdio> #include &l ...