Java oop第05章_多态、接口

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


1/** 2 * 定义了一个接口:接口会提供一些属性和方法 3 * 4 */ 5public interface Usb{ 6 public static final String name = ""; 7 8 /** 9 * 接口中的方法都是抽象方法,加不加abstract关键字都可以 10 * 使用的方法 11 */ 12 public void use(); 13 14 /** 15 * 显示信息的方法 16 * @param name:显示的名称 17 */ 18 public void view(String name); 19 20 /** 21 * 打印输出的方法。 22 */ 23 public void print(); 24 25 26} 27 28/** 29 * 定义一个类:去实现Usb接口 30 * 一个类若继承了一个抽象类或实现接口,该类有两种选择,要么将自己声明为抽象类(可以不用实现父类或接口中的抽象方法), 31 * 要么实现父类中或接口中的所有抽象方法。 32 */ 33public class UsbMouse implements Usb { 34 35 @Override 36 public void use() { 37 System.out.println("USB Mouse的use()方法中输出的内容"); 38 } 39 40 @Override 41 public void view(String name) { 42 System.out.println("USB Mouse的view()方法中输出的内容"); 43 } 44 45 @Override 46 public void print() { 47 System.out.println("USB Mouse的print()方法中输出的内容"); 48 } 49 50} 51 52/** 53 * 定义一个类:去实现Usb接口 54 */ 55 56public class UsbFan implements Usb { 57 58 @Override 59 public void use() { 60 System.out.println("USB Fan的use()方法中输出的内容"); 61 62 } 63 64 @Override 65 public void view(String name) { 66 System.out.println("USB Fan的view()方法中输出的内容"); 67 } 68 69 @Override 70 public void print() { 71 System.out.println("USB Fan的print()方法中输出的内容"); 72 73 } 74 75} 76 77public class UsbTest { 78 public static void main(String[] args) { 79 //一个父类型的引用可以指向多个子类的对象(实例、引用),称为多态。 80 Usb usb = new UsbMouse(); 81 Usb usbfan = new UsbFan(); 82 usb.use(); 83 usbfan.use(); 84 } 85}
点赞
收藏

评论区

加载中...

相关推荐

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

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

Java日期时间API系列31

  时间戳是指格林威治时间1970年01月01日00时00分00秒起至现在的总毫秒数,是所有时间的基础,其他时间可以通过时间戳转换得到。Java中本来已经有相关获取时间戳的方法,Java8后增加新的类Instant等专用于处理时间戳问题。 1获取时间戳的方法和性能对比1.1获取时间戳方法Java8以前

java中多态的实现机制

多态的概念:  简单来说就是事物在运行过程中存在的不同状态,即父类或接口定义的引用变量指向子类或具体实现类的实例对象。程序调用方法在运行期才进行动态绑定,而不是引用变量的类型中定义的方法。多态存在的前提:1、存在继承关系,子类继承父类;2、子类重写父类的方法;3、父类引用指向子类对象。具体实例:1、定义一个父类:Animal

Java oop第05章_多态、接口 - HelloWorld