一、    为什么需要接口?
  Java中当一个类继承父类时,最多也只能继承一个父类,扩展性会受到一定的限制,为了弥补这一缺陷,Java又提供了一种新的引用数据类型分类,叫接口。
一个类只能继承一个父类,但可以实现多个接口。
二、 接口的定义和使用:
  1. 定义接口:使用interface关键字。
  2. 实现接口:在一个抽象类或实现类中可以通过implements关键字。
三、 接口的注意事项:
  1. 接口是比抽象类更加抽象的“类”,接口中所有的方法都是抽象方法(不管是否使用abstract关键字修饰)。
  2. 一个类若继承了一个抽象类或实现接口,该类有两种选择,要么将自己声明为抽象类(可以不用实现父类或接口中的抽象方法),
      要么实现父类中或接口中的所有抽象方法。
  3. 抽象类和接口都是不能被实例化的,即不能创建抽象类和接口的对象。
  4. 接口当中的成员变量(属性、字段)必须是静态常量,且要使用public修饰,同时要赋值。
      public static final String name = "";
  5. 接口不能再去实现(implements)其他接口,但可以使用extends关键字去继承接口,且可以继承多个接口
  6. 抽象类中可以写构造方法,但接口中不能编写构造方法
四、    使用接口的好处:
  1、 可以达到多“继承”的效果,针对Java是单继承的缺陷进行补充,让Java代码的扩展性更好。
  2、 使用接口后可以达到设计(在接口中定义属性和方法)和实现(实现接口中的方法)分离,更利于团队协同开发;
      设计可能是一个公司或组织在完成,而实现是其他更多的公司或组织来完成。
  3、 JDBC、Java web都是先在接口中定义属性和方法,各个数据库厂商实现jdbc的接口、抽象类中定义的抽象方法;
      Java web的实现接口(如:tomcat)实现Java web接口、抽象类中定义的抽象方法。
    
  4、 更自然的实现多态。
  5、 调用者可以不用关心方法实现的细节,只需要知道调用方法时注意的问题即可
      (a、是否需要传递参数,若需要是什么类型的参数;b、方法执行完是否有返回值,若有是什么类型的值;c、观察该方法是在哪个接口、抽象类、实现类定义的)
五、    什么是多态?
  一个父类型(接口、抽象类、实现类)的引用可以指向多个子类的对象(实例、引用),称为多态。



 
/**
* 定义了一个接口:接口会提供一些属性和方法
*
*/
public interface Usb{
public static final String name = ""; /**
* 接口中的方法都是抽象方法,加不加abstract关键字都可以
* 使用的方法
*/
public void use(); /**
* 显示信息的方法
* @param name:显示的名称
*/
public void view(String name); /**
* 打印输出的方法。
*/
public void print(); }
 
/**
* 定义一个类:去实现Usb接口
* 一个类若继承了一个抽象类或实现接口,该类有两种选择,要么将自己声明为抽象类(可以不用实现父类或接口中的抽象方法),
* 要么实现父类中或接口中的所有抽象方法。
*/
public class UsbMouse implements Usb { @Override
public void use() {
System.out.println("USB Mouse的use()方法中输出的内容");
} @Override
public void view(String name) {
System.out.println("USB Mouse的view()方法中输出的内容");
} @Override
public void print() {
System.out.println("USB Mouse的print()方法中输出的内容");
} }


/**
* 定义一个类:去实现Usb接口
*/
public class UsbFan implements Usb {

    @Override
public void use() {
System.out.println("USB Fan的use()方法中输出的内容"); } @Override
public void view(String name) {
System.out.println("USB Fan的view()方法中输出的内容");
} @Override
public void print() {
System.out.println("USB Fan的print()方法中输出的内容"); } }
 
public class UsbTest {
public static void main(String[] args) {
//一个父类型的引用可以指向多个子类的对象(实例、引用),称为多态。
Usb usb = new UsbMouse();
Usb usbfan = new UsbFan();
usb.use();
usbfan.use();
}
}


Java oop第05章_多态、接口的更多相关文章

  1. Java oop 第13章_多线程

    第13章_多线程 一.   多线程相关的概念:  程序:由某种编程语言开发可执行某些功能的代码组合,它是静态的概念.   进程:当程序被执行时的过程可以理解为讲程序从外存调入内存的过程,会为每一个程序 ...

  2. java oop第11章_反射、BaseDao的进一步改造

      引言:从Java5开始,Java中引用了一个新的概念反射,当程序运行时,能动态感知到程序中拥有的所以信息,这个获取信息的过程是采用反射机制来完成. 一.       Class类: Class类用 ...

  3. java oop第07章_集合框架

    一. 什么是集合: 在Java中提供了一些可以保存同一数据类型的数据集称为集合,就是规定了一些集合的规范(接口.抽象类.实现类)及方法, 方便我们程序在保存数据时进行增.删.改.查操作,编程更加高效. ...

  4. java oop第06章_异常处理

    一. 异常的概念: 若程序都按我们事先设定的计划运行为正常执行,但通常会出现我们事先预料之外的其他情况,称为程序发生异常, 在java中会对一些可能出现异常的代码进行分类,达到尽量对可能发生的异常进行 ...

  5. java OOP第03章_继承、抽象类和抽象方法

    一. 为什么需要继承: 若多个类中都需要一些属性和方法,那么就可以将属性和方法抽取到一个父类中,需要的子类可以通过extends关键字去继承这个父类后拥有相应的属性和方法. 类.数组.方法----引用 ...

  6. “全栈2019”Java第五十七章:多态与构造方法详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  7. Java OOP——第三章 多态

    1.多态:(polymorphism): 是具有表现多种形态能力的特征: (专业化的说法:)同一个实现接口(引用类型),使用不同的实例而执行不同的操作 指一个引用(类型)在不同情况下的多种状态.也可以 ...

  8. java oop第09章_JDBC02(CRUD操作)

    第09章_JDBC02(CRUD操作) CRUD(CREATE . RETIVE . UPDATE . DELETE)增删改查. DAO中会提供一些CRUD操作方法,调用者可以通过调用这些方法完成相应 ...

  9. Java OOP——第六章 框架集合

    1.集合框架包含的主要内容及彼此之间的关系: 图1:   集合框架:是为了表示和操作集合而统一规定的一种统一的标准体系结构.               包含三大块的内容:对外的接口.接口的是实现和对 ...

随机推荐

  1. Python 操作excel常见异常

    一.使用xlrd模块读取excel: 1.报错:IndexError: list index out of range,如下图 解决方法:reading_sheet.cell(1,0).value中c ...

  2. 移动APP和传统软件测试的区别[转载]

    目录 1. 移动App比PC 上的程序测试要复杂 2. 移动APP测试中如何设计Test Case 3. 让自己成为真实的用户 4. 关注用户体验测试 5. 少做UI自动化,多做后台接口的自动化 6. ...

  3. mysql高效导入导出load data [infile][outfile]用法

    一.MySQL高效导入数据的方法load data infile load data infile语句从一个文本文件中以很高的速度读入一个表中.使用这个命令之前,mysqld进程(服务)必须已经在运行 ...

  4. 微信小程序支付之代码详解

    微信小程序自带的一套规则,类似vue语法,但是好多功能都集成在api中,给了很多初学者轮子,所以首先要熟悉这些api,忘记可照官网继续开发 这里主要说下微信小程序的支付,原理类似上篇介绍的公众网页支付 ...

  5. Linux 进程间通信 有名管道(fifo)

    有名管道特点: 1)无名管道只能用于具有亲缘关系的进程之间,这就限制了无名管道的使用范围 2)有名管道可以使互不相关的两个进程互相通信. 3)有名管道可以通过路径名来指出,并且在文件系统中可见,但内容 ...

  6. java heap space以及jvisualvm.exe 工具

    最近遇到了java heap space错误. 这个问题的原因,其实还是堆溢出了. 解决这个问题 1 首先我们考虑,在代码中哪里使用了较多的对象,但是又没有及时回收. 2 我们可以通过  jvisua ...

  7. (PASS)字符数组\字符串数组 和 字符串 的相互转换

    1,字符数组 转换为 字符串 java可以使用两种方法直接将字符数组转为字符串. 方法1:直接在构造String时转换. char[] data = {'a', 'b', 'c'}; String s ...

  8. JAVA单线程和多线程的实现方式

    1.java单线程的实现          一个任务一个人独立完成 public class SingletonThread { @SuppressWarnings("static-acce ...

  9. Java高新技术第三篇:注解的使用

    我们知道注解是在JDK1.5引入的,可能有的人没有用过注解,所以感觉注解这个东西没有什么用,但是深入了解注解,对以后学习框架有所帮助的,后面提到的JavaWeb的框架中很多都是基于注解的技术, 其实注 ...

  10. Python内置的一个用于命令项选项与参数解析的模块argparse

    一.argparse简单使用 我们先来看一个简单示例.主要有三个步骤: 创建 ArgumentParser() 对象 调用 add_argument() 方法添加参数 使用 parse_args() ...