zoukankan      html  css  js  c++  java
  • 第三次Java作业

    (一)学习总结

    1.阅读下面程序,分析是否能编译通过?如果不能,说明原因。应该如何修改?程序的运行结果是什么?
    为什么子类的构造方法在运行之前,必须调用父 类的构造方法?能不能反过来?

    class Grandparent {
    public Grandparent() {
    System.out.println("GrandParent Created.");
    }
    public Grandparent(String string) {
    System.out.println("GrandParent Created.String:" + string);
    }
    }
    class Parent extends Grandparent {
    public Parent() {
    System.out.println("Parent Created");
    super("Hello.Grandparent.");
    }
    }
    class Child extends Parent {
    public Child() {
    System.out.println("Child Created");
    }
    }
    public class Test{
    public static void main(String args[]) {
    Child c = new Child();
    }
    }

    不能编译成功
    (1)Java中使用super访问份父类的属性和方法,使用super.属性 来访问父类的属性(有时需要使用
    super来区分同名的属性和方法。使用super可以访问被子类隐藏的同名变量,或者当子类覆盖了父类的同名方法的同时,想调用父类的方法,使用super)
    (2)子类在构造方法中,可以使用super来调用父类的构造函数,使用时super应放在第一句。
    运行结果为:
    GrandParent Created.String:Hello.Grandparent.
    Parent Created
    Child Created
    修改:删除super语句,
    构造一个对象,先调用其构造方法,来初始化其成员变量和成员函数。

    2.阅读下面程序,分析程序中存在哪些错误,说明原因,应如何改正?正确程序的运行结果是什么?

    class Animal{
    void shout(){
    System.out.println("动物叫!");
    }
    }
    class Dog extends Animal{
    public void shout(){
    System.out.println("汪汪......!");
    }
    public void sleep() {
    System.out.println("狗狗睡觉......");
    }
    }
    public class Test{
    public static void main(String args[]) {
    Animal animal = new Dog();
    animal.shout();
    animal.sleep();
    Dog dog = animal;
    dog.sleep();
    Animal animal2 = new Animal();
    dog = (Dog)animal2;
    dog.shout();
    }
    }
    错误:
    上转型不能调用子类增加的方法
    下转型中如果父类对象是有父类直接定义的,那么在下转型时编译不会出错,但是运行时会报错
    修改后 运行结果:

    3.运行下列程序

    class Person {
    private String name ;
    private int age ;
    public Person(String name,int age){
    this.name = name ;
    this.age = age ;
    }
    }
    public class Test{
    public static void main(String args[]){
    Person per = new Person("张三",20) ;
    System.out.println(per);
    System.out.println(per.toString()) ;
    }
    }
    (1)程序的运行结果如下,说明什么问题?

    Person@166afb3
    Person@166afb3
    (2)那么,程序的运行结果到底是什么呢?利用eclipse打开println(per)方法的源码,
    查看该方法中又调用了哪些方法,能否解释本例的运行结果?
    结果;
    姓名:张三,年龄:20
    姓名:张三,年龄:20
    (3)在Person类中增加如下方法

    public String toString(){
    return "姓名:" + this.name + ",年龄:" + this.age ;
    }
    4.汽车租赁公司,出租汽车种类有客车、货车和皮卡三种,每辆汽车除了具有编号、名称、租金三个基本属性之外,
    客车有载客量,货车有载货量,皮卡则同时具有载客量和载货量。用面向对象编程思想分析上述问题,
    将其表示成合适的类、抽象类或接口,说明设计思路。现在要创建一个可租车列表,应当如何创建?
    定义三个子类客车,三个属性,货车,皮卡继承抽象类;
    定义两个接口,客车实现接口b,货车实现接口a,皮卡实现接口a,b;
    在测试类中实例化客车类,货车类,皮卡类,调用子类中的重写的toString方法输出相关信息;

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

    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();
    

    }
    }
    不能通过
    原因:Dog类应把接口中的所有的抽象方法都进行定义
    修改后结果:

    6.其他需要总结的内容
    1》接口
    1)方法永远是public
    2)一个子类可以同时实现多个接口
    3)如果在开发一个子类既要实现接口又要继承抽象类
    class 子类 extends 抽象类 implements 接口 A,接口B,...{
    }
    2>对象类
    1)可以有抽象方法,普通方法
    2)抽象类不能用new实例化,子类可以利用上转型
    3》对象转型
    1)上转型:子类实例给父类,上转型调用方法时,只能调用子类继承和重写过的方法,而不会是子类新增的方法
    2)下转型:父类实例给子类
    4》继承
    1)类 继承
    class 父类{}
    class 子类 extends 父类{}
    2)只允许多层继承,不能多重继承
    3)子类对象实例化,先调用父类构造,在调用子类构造
    (二)实验总结
    1.银行新用户现金业务办理
    程序设计思路
    1)定义银行类Bank和交易类Trade
    2)定义静态方法welcome()
    3)构造方法实现新用户开通,用户名,密码,交易额(交易额减去开卡费是当前余额)
    存款:余额加上交易额
    取款:先登录密码,判断密码正确与否,不正确返回;正确继续 余额小于交易额,返回-1;大于,返回1
    2.员工类
    程序设计思路
    1)继承思想
    2)定义父类为员工类,构造无参有参
    3)定义管理层类,继承员工类
    4)定义职员类,继承员工类
    5)定义测试类
    3.平面设计
    程序设计思路
    1)定义一个平面图形抽象类
    2)子类是平面的矩形、三角形、圆
    3)定义一个立体图形抽象类
    4)子类是立体的球类,圆柱类,圆锥类,求体积,表面积
    5)定义测试类,先1后2
    4.饲养小动物
    程序设计思路
    1)上转型,下转型
    2)定义动物类,食物,动物名称抽象方法
    3)上转,吃形参抽象对象,实参子类实例
    4)定义小李类,动物吃啥
    5.宠物商店
    程序设计思路
    1)接口
    2)定义接口类,含编号、种类、品种、单价、数量
    3) 定义猫类,含编号、种类、品种、单价、数量
    4)定义狗类,编号、种类、品种、单价、数量
    5)定义商店类,放入宠物清单,购买方法
    6)定义购买清单类,在宠物商店加减宠物种类,显示价格
    6.模拟器
    程序设计思路
    1)定义接口Animal,含cry()和getAnimalName()的方法
    2)定义Dog类,Cat类,分别含cry()和getAnimalName()的方法
    3)定义Simulator类,调用Dog类,Cat类
    4)定义测试类,调用playSound()
    7.物流快递系统
    程序设计思路
    1)定义Transportation类,含编号,型号,运输负责人
    2)定义IDTransportation类,继承父类,实现transport()
    3)定义GPS接口,showCoordinate()跟踪货物位置信息
    4)定义Phone实现GPS接口
    5)定义SendTask,私有属性含快递单号,货物重量

    (三)码云提交

  • 相关阅读:
    Caused by: java.lang.UnsatisfiedLinkError: Couldn't load 。。。。
    final,finally,finalize
    Java位运算总结:位运算用途广泛《转》
    Ext.Ajax.request同步请求
    xstream 别名的用法<转>
    MySQL 获得当前日期时间(以及时间的转换)
    关于用xercesImpl包解析xml文件遇中文报错问题
    kafka java示例
    varnish、squid、apache、nginx缓存的对比<转>
    websphere性能设置和日常维护
  • 原文地址:https://www.cnblogs.com/haoran333/p/8884008.html
Copyright © 2011-2022 走看看