zoukankan      html  css  js  c++  java
  • 《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)
    即便不高谈理想,也要心存信仰。
  • 相关阅读:
    zoj 1239 Hanoi Tower Troubles Again!
    zoj 1221 Risk
    uva 10192 Vacation
    uva 10066 The Twin Towers
    uva 531 Compromise
    uva 103 Stacking Boxes
    稳定婚姻模型
    Ants UVA
    Golden Tiger Claw UVA
    关于upper、lower bound 的探讨
  • 原文地址:https://www.cnblogs.com/fzlzc/p/10631621.html
Copyright © 2011-2022 走看看