zoukankan      html  css  js  c++  java
  • 201521123095 《Java程序设计》第5周学习总结

    1. 本周学习总结##

    1.1 尝试使用思维导图总结有关多态与接口的知识点。##

    2. 书面作业##

    1.1 com.parent包中Child.java文件能否编译通过?哪句会出现错误?试改正该错误。并分析输出结果。##

    package parent;
    public class OutOfParentPackage{
        public static void showParentj(Parent p){
            System.out.println(p.j);
            System.out.println(p.geti());
            p.getj();
        }
    }
    class Parent{
        private int i=1;
        protected int j=2;
        protected int geti(){
            return i;
        }
        public void getj(){
            System.out.println(j);
        }
    }
    class Other{
        public static void showParentj(Parent p){
            System.out.println(p.j);
            System.out.println(p.geti());
        }
    
    }
    public class Child extends Parent{
        public static void main(String[] args){
            Parent p = new Parent();
            Child c = new Child();
            c.getParenti();
            c.getParentj();
            Other.showParentj(p);   
        }
        public void getParenti(){
            System.out.println(i);
        }
        public void getParentj(){
            System.out.println(super.j);
            System.out.println(j);
            System.out.println(geti());
            System.out.println(super.geti());
        }
    }
    
    不能编译通过,System.out.println(i);这一句会出现错误。因为父类的i为private修饰,所以父类的i对于子类来说是不可见的。要将父类中的i的private改为protected
    

    第一个1是由c.getParenti();语句调用,接下来的2,2,1,1,是由 c.getParentj();语句调用,接下来的2,1,是由Other.showParentj(p);语句调用。
    

    1.2 另外一个包中的OutOfParentPackage.java,能否编译通过?提示什么错误?分析原因。如何更改才能使之正常编译?(写不出来正确答案不要紧,但请一定写出思考过程)##

    不能编译通过,提示的错误是The type Parent is not visible.错误的原因在于Parent类不是public的。要将Parent类改为public才能使之正常编译。
    

    (2)abstract进阶:阅读GuessGame抽象类的设计与使用源代码##

    2.1 Guess改造前代码很简单,而改造后的代码使用了抽象类、抽象方法看起来很复杂,那这样的改造到底有什么好处呢?##

    这样有利于程序的可扩展性,在被改造之前,整个代码未使用抽象类,所以输入输出都由控制台控制,然而在改造之后既可以在控制台输出,也可以使用对话框图形界面等输入。
    

    2.2 如果想将该游戏改造成图形界面,应该进行一些什么操作?##

    设计一个图形界面的类去继承前面所提到的抽象类,至少要有三部分来实现,一个输入,一个提示,一个判断大小。
    

    2.3 结合该例子,你觉得什么时候应该使用abstract?##

    分析问题时仅有大体的框架,抽象方法只有声明,没有具体的方法和定义,这就需要用到abstract类。抽象方法可以被不同的的类以不同的方式去操纵,就能让很多方法在此基础上不断延伸和拓展。
    

    2.4 重要:在这个例子中,变化的是什么,不变的是什么?尝试结合abstract、继承等概念进行说明。##

    变化的是输入方法,没有变化的是抽象类。一个类可以继承一个抽象类,但是可以继承多个接口。接口必须全部实现,抽象类只实现抽象方法,继承类可以不实现。抽象类不能被实例化,只能被继承象类的作用是普通类无法替代的,抽象类的作用主要是提供一种模版。
    

    (3)Comparable与Comparator##

    3.1 描述Comparable接口的用途。为什么某个类实现了Comparable接口就可以直接使用Arrays.sort对其进行排序?##

    Comparable接口对实现他的每个对象进行整体的排序。让待排序对象所在的类实现Comparable接口,实现此接口的对象列表(和数组)可以通过Arrays.sort进行自动排序。并重写Comparable接口中的compareTo()方法。
    

    3.2 有了Comparable接口为什么还需要Comparator接口呢?##

    两个接口都是用来实现集合中元素的比较、排序的。Comparable是在集合内部定义的方法实现的排序,Comparator是在集合外部实现的排序,Comparable接口赋予了类可比较的特性,而Comparator接口实现了一个可以比较两个属于某一特定类的专用比较类。
    

    (4)面向接口案例分析,阅读Case-StudentDao.zip案例##

    4.1 画出类关系图,描述每个类与接口的作用。##

    4.2 StudenDaoListImpl与StudentDaoArrayImpl有何区别?##

    StudenDaoListImpl通过ArrayList实现,StudentDaoArrayImpl通过数组实现
    

    (5)什么是面向接口编程?面向接口编程的好处是什么?结合题目3与4(Test.java的代码)讨论分析。不要百度原封不动照搬!##

    在一个面向对象的系统中,系统的各种功能是由许许多多的不同对象协作完成的,面向接口编程是通过各个对象之间的协作关系来实现整个系统。接口的好处就是可以不用提供实现细节,而只是提供该接口应该具备怎样的行为,或者说具有什么方法,使类之间通信简单易懂,扩展性好,提高复用性,扩展性,松耦合,题目3用到Comparable和Comparator两个接口,通过这两个接口,我们可以很方便地对自己定义的类进行比较,从而调用Arrays里面已经写好的sort()方法来排序。这个过程相当于面向接口编程。题目4也是如此,在Test类里面,我们只要关心数据到底是以何种数据结构来存放,不需要管具体的底层实现。
    

    3. 码云上代码提交记录及PTA实验总结##

    3.1. 码云代码提交记录##

    3.2. PTA实验

    5.1需要了解Comparable接口的定义和作用,再运用上类的相关知识,实现Comparable接口,最后使用使用Arrays.sort进行排序。
    5.2中需要理解好Comparator。
  • 相关阅读:
    数据结构-栈
    virtualenvwrapper 的安装和使用
    MySQL命令行本地登陆,远程登陆MySQL 的快捷键
    关于mysql8授权的问题,mysql萌新小白采坑记录
    史上最直接小白式的Sourcetree的分支创建与合并
    验证两个集合是否相等的方法
    VS开发工具的常用插件
    C# 数据库并发的解决方案(通用版、EF版)
    Jquery实现div左右重复来回走动
    描述符的应用
  • 原文地址:https://www.cnblogs.com/YYYYYYY/p/6614149.html
Copyright © 2011-2022 走看看