Java oop第05章_多态、接口


一、    为什么需要接口?
  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();
    }
}



优质内容筛选与推荐>>
1、ajax请求默认都是异步请求,怎么变为同步请求
2、js区别手机和电脑打开网页
3、java温故而知新(6)深入理解IO Stream
4、关于java实体类相关问题
5、拉取代码产生冲突 && 切换分支


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号





    联系我们

    欢迎来到TinyMind。

    关于TinyMind的内容或商务合作、网站建议,举报不良信息等均可联系我们。

    TinyMind客服邮箱:support@tinymind.net.cn