zoukankan      html  css  js  c++  java
  • 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();
        }
    }
    
    
    
    
    
  • 相关阅读:
    基本MVVM 和 ICommand用法举例(转)
    WPF C# 命令的运行机制
    628. Maximum Product of Three Numbers
    605. Can Place Flowers
    581. Shortest Unsorted Continuous Subarray
    152. Maximum Product Subarray
    216. Combination Sum III
    448. Find All Numbers Disappeared in an Array
    268. Missing Number
    414. Third Maximum Number
  • 原文地址:https://www.cnblogs.com/zhangzimuzjq/p/11703457.html
Copyright © 2011-2022 走看看