Java oop第05章_多态、接口

Wesley13
• 阅读 483
一、    为什么需要接口?
  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();
    }
}
点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Jacquelyn38 Jacquelyn38
2年前
你不可不知的JS面试题(第二期)
1、什么是继承?子类可以使用父类的所有功能,并且对功能进行扩展。新增方法改用方法(1)、ES6使用extends子类继承父类的方法。// 父类    class A        constructor(name)            this.name name;                getNa
Wesley13 Wesley13
2年前
java中多态的实现机制
多态的概念:  简单来说就是事物在运行过程中存在的不同状态,即父类或接口定义的引用变量指向子类或具体实现类的实例对象。程序调用方法在运行期才进行动态绑定,而不是引用变量的类型中定义的方法。多态存在的前提:1、存在继承关系,子类继承父类;2、子类重写父类的方法;3、父类引用指向子类对象。具体实例:1、定义一个父类:Animal
Wesley13 Wesley13
2年前
Java日期时间API系列31
  时间戳是指格林威治时间1970年01月01日00时00分00秒起至现在的总毫秒数,是所有时间的基础,其他时间可以通过时间戳转换得到。Java中本来已经有相关获取时间戳的方法,Java8后增加新的类Instant等专用于处理时间戳问题。 1获取时间戳的方法和性能对比1.1获取时间戳方法Java8以前
Wesley13 Wesley13
2年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Wesley13 Wesley13
2年前
Java 接口基础详解
目录Java接口示例实现一个接口接口实例实现多个接口方法签名重叠接口变量接口方法接口默认方法接口与继承继承与默认方法接口与多态性在Java中,接口是一个抽象类型,有点类似于类,但Java接口只能包含方法签名与属性,
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
4个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这