zoukankan      html  css  js  c++  java
  • JAVA第五次作业

    JAVA第五次作业

    (一)学习总结

    1.在上周完成的思维导图基础上,补充本周的学习内容,对Java面向对象编程的知识点做一个全面的总结。

    2.汽车租赁公司,出租汽车种类有客车、货车和皮卡三种,每辆汽车除了具有编号、名称、租金三个基本属性之外,客车有载客量,货车有载货量,皮卡则同时具有载客量和载货量。用面向对象编程思想分析上述问题,将其表示成合适的类、抽象类或接口,说明设计思路并画出类图。

    设计思路:设计父类Car,三个子类继承父类

    3.阅读下面程序,分析代码是否能编译通过,如果不能,说明原因,并进行改正。如果能,列出运行结果

      interface Animal{    
            void breathe();
            void run();
            void eat();
        }
        class Dog implements Animal{
            public void breathe(){
                System.out.println("I'm breathing");
            }
            void eat(){
                System.out.println("I'm eating");
            }
        }
        public class Test{
            public static void main(String[] args){
                Dog dog = new Dog();
                dog.breathe();
                dog.eat();
            }
        }
    

    不能运行:

    Test.java:6: 错误: Dog不是抽象的, 并且未覆盖Animal中的抽象方法run()
        class Dog implements Animal{
        ^
    Test.java:10: 错误: Dog中的eat()无法实现Animal中的eat()
            void eat(){
                 ^
      正在尝试分配更低的访问权限; 以前为public
    2 个错误
    

    原因:

    1.接口是方法和变量的集合,接口必须被子类实现

    修改:在Dog类中实现run()方法

    2.子接口在覆写父接口的方法时,方法的访问权限必须大于或等于父接口的方法访问权限

    修改:void eat()->public void eat()

    修改后代码:

      interface Animal{    
            void breathe();
            void run();
            void eat();
        }
        class Dog implements Animal{
            public void breathe(){
                System.out.println("I'm breathing");
            }
            public void run(){
            	System.out.println("I'm running");
            }
            public void eat(){
                System.out.println("I'm eating");
            }
        }
        public class Test{
            public static void main(String[] args){
                Dog dog = new Dog();
                dog.breathe();
                dog.eat();
                dog.run();
            }
        }
    

    运行结果:

    I'm breathing
    I'm eating
    I'm running
    

    4.运行下面的程序

    import java.util.Arrays;
        public class Test{
            public static void main(String[] args){
                String[] fruits = {"peach","banana","orange","apple"};
                Arrays.sort(fruits);
                for(int i = 0;i < fruits.length;i++)
                {
                    System.out.println(fruits[i]);
                }
            }
        }
    

    运行结果:

    apple
    banana
    orange
    peach
    

    程序输出的结果是排序升序的。查看String 类的源码,说明是如何实现的?如果现在希望对输出的结果进行降序排序,该如何处理?修改上述代码,实现按照字母顺序逆序排序。

    修改:

    import java.util.Arrays;
        public class Test{
            public static void main(String[] args){
                String[] fruits = {"peach","banana","orange","apple"};
                Arrays.sort(fruits);
                for(int i = fruits.length-1;i >= 0;i--)
                {
                    System.out.println(fruits[i]);
                }
            }
        }
    

    运行结果:

    peach
    orange
    banana
    apple
    

    (二)实验总结

    1.某工厂生产各种音乐盒,客户无需知道音乐盒的制作过程,只需知道如何播放音乐盒即可。用简单工厂设计模式实现该过程:接口MusicBox具有方法play(),两个音乐盒类PianoBox,ViolinBox,MusicBoxFactory 产生MusicBox的实例。

    程序设计思路:

    设计接口MusicBox,设计类PianoBox,ViolinBox实现接口MusicBox,在MusicBoxFactory中通过方法实现对类的实例化,并在测试类中调用。

    2.修改第三次作业的第一题,使用java.util.Date类表示职工的生日和参加工作时间,并将职工信息按照生日大小排序后输出。(分别用comparable和comparator实现)

    程序设计思路:

    把String类的字符串转为Date类。

    comparable:覆写compareTo方法,通过before对Date类型的属性进行比较。

    comparator:覆写equals方法和compare方法

    3.在案例宠物商店的基础上,实现以下功能:

    (1)展示所有宠物

    (2)购买宠物

    (3)显示购买清单

    程序设计思路:

    设计Pet接口,设计Cat、BigDog和SmallDog类实现Pet接口,设计PetShop类。

    (三)代码托管

    • 码云commit历史截图

    (四)学习进度条

    代码行数(新增/累积) 学习时间(新增/累积) 本周学习内容
    目标 5000行 300小时
    第2-4周 300/300 15/15 学习了用Scanner从控制台输入和随机数的创建和应用
    第5周 500/500 25/25 String和char[]等之间的相互转化
    第6周 550/550 35/35 class类的创建和应用,this关键字,java比较器
    第7周 650/650 45/45 继承和覆写
    第8周 750/750 55/55 接口、抽象类、日期类和匿名内部类
  • 相关阅读:
    红黑树以及与AVL树的区别
    yum安装mysql
    sql注入攻击
    http keep-alive
    csrf和xss
    点击事件跳转QQ 添加好友
    引入百度地图及出现的问题
    node 出现npm ERR! code ERR_TLS_CERT_ALTNAME_INVALID npm ERR! errno ERR_TLS_CERT_ALTNAME_INVALID npm ERR! request to https://registry.cnpmjs.org/vue-cli failed, reason:
    正则表达式校验-大于0的所有数,小数点后保留两位小数和正整数
    vue项目引入富文本编辑器(回显)
  • 原文地址:https://www.cnblogs.com/yamito/p/6744213.html
Copyright © 2011-2022 走看看