为了账号安全,请及时绑定邮箱和手机立即绑定
慕课网数字资源数据库体验端
Java入门第二季_学习笔记_慕课网
为了账号安全,请及时绑定邮箱和手机立即绑定

Java入门第二季

IMOOC老齐 全栈工程师
难度入门
时长 4小时 0分
  • fig


    查看全部
  • instanceof

    查看全部
  • 注意类对象和类的对象

    查看全部
  • package com.test.car;
    
    public class Car {
        public String name; // 名字
        public double rent; // 租金
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public double getRent() {
            return rent;
        }
    
        public void setRent(double rent) {
            this.rent = rent;
        }
    
        public Car() {
    
        }
    
        public Car(String name, double rent) {
            super();
            this.name = name;
            this.rent = rent;
        }
    
    }

    package com.test.car;

    public class PassengerCar extends Car {

        private Integer peopleCapacity; // 客容量

        public PassengerCar(String name, double rent, Integer peopleCapacity){
            this.name = name;
            this.rent = rent;
            this.peopleCapacity = peopleCapacity;
        }

        public Integer getPeopleCapacity() {
            return peopleCapacity;
        }

        public void setPeopleCapacity(Integer peopleCapacity) {
            this.peopleCapacity = peopleCapacity;
        }

    }

    package com.test.car;

    public class Trunk extends Car {

        private double cargoCapacity;

        public Trunk(String name, double rent, double cargoCapacity) {
            this.name = name;
            this.rent = rent;
            this.cargoCapacity = cargoCapacity;
        }

        public void setCargoCapacity(double cargoCapacity) {
            this.cargoCapacity = cargoCapacity;
        }

        public double getCargoCapacity() {
            return cargoCapacity;
        }
    }

    package com.test.car;

    public class Pickup extends Car {

        private double cargoCapacity;
        private Integer peopleCapacity;

        public Pickup(String name, double rent, double cargoCapacity, Integer peopleCapacity) {
            this.name = name;
            this.rent = rent;
            this.cargoCapacity = cargoCapacity;
            this.peopleCapacity = peopleCapacity;
        }

        public void setCargoCapacity(double cargoCapacity) {
            this.cargoCapacity = cargoCapacity;
        }

        public double getCargoCapacity() {
            return cargoCapacity;
        }

        public Integer getPeopleCapacity() {
            return peopleCapacity;
        }

        public void setPeopleCapacity(Integer peopleCapacity) {
            this.peopleCapacity = peopleCapacity;
        }

    }

    package com.test.car;

    import java.util.Arrays;
    import java.util.Scanner;

    public class Test {

        public static void main(String[] args) {
            Car[] cars = { new PassengerCar("奥迪A4", 500, 4), new PassengerCar("马自达", 400, 4),
                    new PassengerCar("金龙", 800, 20), new Trunk("松花江", 400, 4), new Trunk("依维柯", 1000, 20),
                    new Pickup("皮卡雪", 450, 4, 2) };
            System.out.println("欢迎使用租车系统:");
            System.out.println("您是否要租车:1是0否");
            System.out.println(cars.length);
            double rentMoney = 0;
            int input = 0;
            do {
                // 接收键盘输入的数据,判断是否符合要求
                Scanner sc = new Scanner(System.in);
                input = sc.nextInt();
                if (input != 0 && input != 1) {
                    System.out.println("您输入的数据不合法,请重新输入:");
                }
            } while (input != 0 && input != 1);

            // System.out.println(input);
            if (input == 1) {
                System.out.println("您可租车的类型及其价目表如下:");
                System.out.println("序号\t汽车名称\t租金\t容量");
                int i = 1; // 车的序号(等于cars数组下标加一)
                for (Car car : cars) {
                    if (car instanceof PassengerCar) {
                        PassengerCar pc = (PassengerCar) car;
                        System.out.println(
                                i + "\t" + car.getName() + "\t" + car.getRent() + "\t载人:" + pc.getPeopleCapacity() + "人");
                        i++;
                    }
                    if (car instanceof Trunk) {
                        Trunk tk = (Trunk) car;
                        System.out.println(
                                i + "\t" + tk.getName() + "\t" + tk.getRent() + "\t载重:" + tk.getCargoCapacity() + "t");
                        i++;
                    }
                    if (car instanceof Pickup) {
                        Pickup pic = (Pickup) car;
                        System.out.println(i + "\t" + pic.getName() + "\t" + pic.getRent() + "\t载人:"
                                + pic.getPeopleCapacity() + "人,载重:" + pic.getCargoCapacity() + "t");
                        i++;
                    }
                }

                System.out.println("请输入您要租汽车的数量:");
                Scanner sc02 = new Scanner(System.in);
                int carNum = sc02.nextInt();
                // 所选车序号数组
                int[] orderNums = new int[10];
                for (int j = 1; j <= carNum; j++) {
                    System.out.println("请输入第" + j + "辆车的序号");
                    Scanner sc03 = new Scanner(System.in);
                    int orderNum = sc03.nextInt();
                    // 把所选车序号放入数组
                    orderNums[j - 1] = orderNum;
                    rentMoney += cars[orderNum - 1].getRent();
                }
                System.out.println(Arrays.toString(orderNums));
                System.out.println("请输入租车天数:");
                Scanner sc04 = new Scanner(System.in);
                int days = sc04.nextInt();
                rentMoney = rentMoney * days;
                System.out.println("您的账单:");
                System.out.println("**可载人的车有:");
                int peopleNum = 0; // 载客综述
                double cargoNum = 0; // 载货总数
                String peopleStr = "";
                String cargoStr = "";
                for (int x = 0; x < carNum; x++) {
                    if (cars[orderNums[x] - 1] instanceof PassengerCar) {
                        PassengerCar pc = (PassengerCar) cars[orderNums[x] - 1];
                        peopleNum += pc.getPeopleCapacity();
                        peopleStr = peopleStr + pc.getName() + "\t";
                    }
                    if (cars[orderNums[x] - 1] instanceof Pickup) {
                        Pickup pic = (Pickup) cars[orderNums[x] - 1];
                        peopleNum += pic.getPeopleCapacity();
                        cargoNum += pic.getCargoCapacity();
                        peopleStr = peopleStr + pic.getName() + "\t";
                        cargoStr = cargoStr + pic.getName() + "\t";
                    }
                    if (cars[orderNums[x] - 1] instanceof Trunk) {
                        Trunk trunk = (Trunk) cars[orderNums[x] - 1];
                        cargoNum += trunk.getCargoCapacity();
                        cargoStr = cargoStr + trunk.getName() + "\t";
                    }
                }
                System.out.println(peopleStr.toString() + "\t共载人:" + peopleNum + "人");
                System.out.println("**载货的车有:");
                System.out.println(cargoStr.toString() + "\t共载货:" + cargoNum + "t");
                System.out.println("**租车总价格:" + rentMoney);
            }
        }
    }

    写的代码总体有点乱,功能也有很多需要完善的地方,还是要多加练习,加油

    查看全部
  • 对象:鱼

    对象的属性:鳞片  淡水海水 

    对象的方法:吃的


    查看全部
  • object类

    object类是所有类的父类,如果一个类没有使用extends关键字明确标示继承另外一个类,那么这个类默认继承object类。

    object类中的所有方法,适合所有子类。

    1.toString()方法

    在object类里面定义toString()方法的时候返回的对象的哈希code码(对象地址字符串)

    可以通过重写toString()方法表示出对象的属性

    2.equals()方法

    比较的是对象的引用是否指向同一块内存地址。

    Dog dog = new Dog()

    一般情况下比较两个对象是比较他的值是否一致,所以要进行重写。

    https://img1.sycdn.imooc.com//5aeeba310001b31504420253.jpg

    查看全部
  • 构造方法,初始化块,静态初始化块,在创建的时候就会执行,不需要调用。无论创建多少对象,静态初始化块都只会执行一次。

    查看全部
  • 程序执行时,首先执行静态初始化块,然后执行普通初始化块,最后执行构造方法。且静态初始化块只执行一次。

    查看全部
  • 包含抽象方法的类一定是抽象类,抽象类和抽象方法都需要添加关键字 abstract,且顺序为 abstract class。

    查看全部
    0 采集 收起 来源:练习题

    2018-05-06

  • 抽象

    https://img1.sycdn.imooc.com//5aeeb3830001251007380388.jpg

    抽象指所有的子类都继承父类的抽象的方法

    查看全部
  • 继承

    super关键字

    在对象的内部使用,可以代表父类对象。

    1.访问父类的属性

    super.age

    2.访问父类的方法

    super.eat()

    super的应用

    1.子类的构造的过程中必须调用其父类的构造方法;

    2.如果子类的构造方法中没有显式调用父类的构造方法,则系统默认调用父类无参的构造方法;

    3.如果显式的调用父类构造方法,必须在子类的构造方法的第一行;

    4.如果子类的构造方法中既没有显式调用父类的构造方法,而父类有没有无参的构造方法,则编译出错


    查看全部
  • 接口中的属性都是常量,public static final

    接口中的方法都是抽象方法


    查看全部
    0 采集 收起 来源:Java 中的接口

    2018-05-06

  • 构造方法名与类名相同,有参的构造方法的目的只有一个,用来初始化类中的成员变量的值

    查看全部
  • 抽象方法没有方法体,以“;"结束

    查看全部
  • Java中的final的使用

    final关键字

    使用final关键字做标示有"最终的"含义;

    final关键字可以修饰类、方法、属性和变量;

    final修饰类,则该类不允许被继承;

    final修饰方法,则该方法不允许被覆盖(重写);

    final修饰属性:

    则该类的属性不会进行隐式的初始化(类的初始化属性必须有值);

    或在构造方法中赋值(但只能选其一)

    final修饰变量,则该变量的值只能赋一次值,即变为常量;


    查看全部

举报

0/150
提交
取消
课程须知
本课程是Java开发的基础,需要大家:掌握 Java 基本语法的使用。如果您是新手,建议先移步 《Java入门第一季》https://www.imooc.com/learn/85
老师告诉你能学到什么?
• 掌握 Java 编程思路 • 熟练运用面向对象程序设计思想
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!