• 《Java程序设计》第5周学习总结


    20175214 《Java程序设计》第5周学习总结


    本周学习内容总结

    1、根据《java2实用教程》和蓝墨云学习视频学习第五章;

    2、尝试将课本疑难内容用自己的话复述手打;

    3、输入课本代码并上传码云;

    4、使用IDEA调试代码。


    教材学习疑难内容总结

    • 6.1 接口

      初步的了解:一个类只能extends一个父类,但可以implements多个接口。java通过使用接口的概念来取代C++中多继承。与此同时,一个接口则可以同时extends多个接口,却不能implements任何接口。因而,Java中的接口是支持多继承的。

      • 接口的声名格式
      interface 接口的名字
      
      • 接口体
        • 接口中只有常量的声明和抽象方法,没有普通方法。
        • 常量访问权限均为public,且为static常量(可省略public、final和static)。
        • 抽象方法的访问权限均为public(可省略public和abstract)。
    • 6.2 实现接口

      • 类实现接口的格式
      class 类名 implements 接口a,接口b...
      
      • 重写接口中的方法

        • 由于接口中的方法均为抽象方法,故而非抽象类实现接口时需重写接口中的所有方法。
        • 方法权限必须为public。
        • java源文件可以同时拥有类和接口。
        • 抽象类实现接口时既可以重写方法,也可以直接拥有接口中的方法(选择性重写)。
      • 接口的进一步说明

        • 程序通过接口名访问其中的常量,而类在实现接口后可以直接使用。
        • 定义接口时使用public关键字即为public接口,如果不加则为友好借口,友好借口可被同一包中的类实现。
        • 子类自动实现父类已实现的接口。
        • 接口之间可通过关键字extends实现继承。
    • 6.3 接口回调

      • 接口属于引用型变量,接口变量中可以存放实现存放实现该接口的类的实例的引用。
      • 当用接口声名一个变量,并用实现该接口的类给这个变量赋值后(可以用new存放引用),该变量即可调用类实现的接口方法(调用过程即为接口回调)。
      interface  ShowMessage {
      void 显示商标(String s);
      

    }
    class TV implements ShowMessage {
    public void 显示商标(String s) {
    System.out.println(s);
    }
    }
    class PC implements ShowMessage {
    public void 显示商标(String s) {
    System.out.println(s);
    }
    }
    public class Example6_2 {
    public static void main(String args[]) {
    ShowMessage sm; //声明接口变量
    sm=new TV(); //接口变量中存放对象的引用
    sm.显示商标("长城牌电视机"); //接口回调。
    sm=new PC(); //接口变量中存放对象的引用
    sm.显示商标("联想奔月5008PC机"); //接口回调
    }
    }

    
    
    + 6.4 理解接口
    
       + 为什么要用接口
          + 接口可以抽象出重要的行为标准,并让实现该接口的类各自重写其中的方法,即规范实现接口的各个类必须拥有某个名字相同,但内容完全不同的方法。
          + 继承时有的abstract方法子类并不需要,这时可以使用接口,让类选择自己需要的方法。
    
    + 6.5 接口与多态
    
       + 不同的类在实现同一个接口时,具有不同的实现方式,即拥有某个名字相同,但内容完全不同的方法,那么接口变量在回调时就可能具有多种形态。
    
    
    + 6.6 接口参数
    
       + 如果一个方法的参数是接口类型,那么可以将任何实现该接口的类的实例的引用传递给该接口,从而回调类实现的接口方法。
    
    
    + 6.7 abstract类和接口的比较
       - abstract类和接口的异同
        + 二者都可以有abstract方法。
        + 接口中只可以有常量,不能有变量;abstract类两个都能有。
        - abstract类中可以有非abstract方法,接口只能有abstract方法。
    
       - abstract类和接口的抉择
        - 当需要继承某些变量或重要的非abstract方法时,考虑abstract类。
        - 当只是需要某些重要的abstract方法的实现细节时,考虑使用接口。
    + 6.8  面向接口编程
    
       - 在一个面向对象的系统中,系统的各种功能是由许许多多的不同对象协作完成的。在这种情况下,各个对象内部是如何实现自己的,对系统设计人员来讲就不那么重要了;而各个对象之间的协作关系则成为系统设计的关键。小到不同类之间的通信,大到各模块之间的交互,在系统设计之初都是要着重考虑的,这也是系统设计的主要工作内容。面向接口编程就是指按照这种思想来编程。
    
       - 与面向抽象编程的思想类似,面对接口编程同样是专注于设计程序,而将具体实现交由其他类,不同的是,抽象类将抽象方法的实现交给其子类,而接口将其交给了实现该接口的类。
    
       - 使用接口进行程序设计的核心在于使用接口回调,即接口变量存放实现该接口的类的对象的引用,从而接口变量回调类实现的接口方法。
    
       - 利用接口可以体现程序设计的“开-闭原则”,即对扩展开放,对修改关闭。
    ![](https://img2018.cnblogs.com/blog/1592121/201903/1592121-20190331151255376-149729103.jpg)
    
    
    
    ---
    
    ## 教材学习中的问题和解决过程
    
    - **问题1**:不理解什么是面对接口编程
    - **问题1解决方案**:参考(https://baike.baidu.com/item/%E9%9D%A2%E5%90%91%E6%8E%A5%E5%8F%A3%E7%BC%96%E7%A8%8B/6025286)后,我理解的面对接口编程就是定义与实现分离,方便实现“开-闭原则”,方便扩展以及与他人合作时他人添加功能。
    
    
    - **问题2**:为什么abstract不和可以和final一同使用
    - **问题2解决方案**:被final修饰后的类不能出现子类,而abstract的类需要子类来重写方法(不然将毫无意义)。
    
    
    ---
    ## [代码托管](https://gitee.com/fzlzc/java2019)
    ![](https://img2018.cnblogs.com/blog/1592121/201903/1592121-20190331154112087-695224883.png)
    ![](https://img2018.cnblogs.com/blog/1592121/201903/1592121-20190331154141079-1163411843.png)
    即便不高谈理想,也要心存信仰。
  • 相关阅读:
    PyCharm使用(完全图解(最新经典))
    pg存储过程学习
    sql_to_sqlalchemy
    python中嵌入lua解析器
    Python和lua互相调用
    Lupa
    [cb] Unity Editor 添加右键菜单
    [C#] 委托之Action和Func区别
    [反编译U3D]Decompile Unity Resources
    [cb] Assetbundle打包(一)
  • 原文地址:https://www.cnblogs.com/fzlzc/p/10631621.html
Copyright © 2020-2023  润新知