Java构造方法经典例题

1.在程序中,经常要对时间进行操作,但是并没有时间类型的数据。那么,我们可以自己实现一个时间类,来满足程序中的需要。

定义名为MyTime的类,其中应有三个整型成员:时(hour),分(minute),秒(second),为了保证数据的安全性,这三个成员变量应声明为私有。

为MyTime类定义构造方法,以方便创建对象时初始化成员变量。

再定义diaplay方法,用于将时间信息打印出来。

为MyTime类添加以下方法:

addSecond(int sec)

addMinute(int min)

addHour(int hou)

subSecond(int sec)

subMinute(int min)

subHour(int hou)

分别对时、分、秒进行加减运算。

Java代码:

package com.oricle.demo06;

public class MyTime {
    //私有成员变量
    private int hour;
    private int minute;
    private int second;
    
    //构造方法
    public MyTime(int hour, int minute,int second){
        this.hour=hour;
        this.minute=minute;
        this.second=second;
        
    }
    
    public int getHour() {
        return hour;
    }
    public void setHour(int hour) {
        this.hour = hour;
    }
    public int getMinute() {
        return minute;
    }
    public void setMinute(int minute) {
        this.minute = minute;
    }
    public int getSecond() {
        return second;
    }
    public void setSecond(int second) {
        this.second = second;
    }
    //秒+
    public void addSecond(int sec){
        second +=sec;
        huansuan();
    }
    //分钟+
    public void addMinute(int min){
        minute +=min;
        huansuan();
    }
    //小时+
    public void addHour(int hou){
        hour +=hou;
        huansuan();
    }
    //秒-
    public void subSecond(int sec){
        second -=sec;
        huansuan();
    }
    //分钟-
    public void subMinute(int min){
        minute -=min;
        huansuan();
    }
    //小时-
    public void subHour(int hou){
        hour -=hou;
        huansuan();
    }
    //打印显示时间
    public void display()
    {
        huansuan();//调用时间换算判断
        String h=null;
        String m=null;
        String s=null;
        //判断输入的时间为两位数
        //小时
        if(hour<10){
            h="0"+hour;
            
        }else{
            h=hour+"";
        }
        //
        if(second<10){
            s="0"+second;
            
        }else{
            s=second+"";
        }
        //分钟
        if(minute<10){
            m="0"+minute;
            
        }else{
            m=minute+"";
        }
        //打印输出该时间
        System.out.println(h+"小时"+m+"分钟"+s+"秒");
        
    }
    public void huansuan(){
        //秒(同下)
        if(second>=60){
            minute =minute+second/60;//分钟加上秒数多的部分,即秒转换为分钟
            second =second%60;//描述剩余部分
        }else if(second<0){
            if(second%60!=0){
                minute=minute+(second/60-1);//-1是秒从分钟借1(分钟)
                second=second%60+60;//+60是从分钟借1,加60秒(一分钟)
            }else{
                minute=minute+second/60;
                second=second%60;
            }
        }
        //分钟
        if(minute>=60){
            hour=hour+minute/60;
            minute=minute%60;
            
        }else if(minute<0){
            if(minute%60!=0){
                hour=hour +(minute/60-1);
                minute=minute%60+60;
                
            }else{
                hour=hour +minute/60;
                minute=minute%60;
            }
        }
        //小时
        if(hour>=24){
            hour=hour%24;
            
        }else if(hour<0){
            if(hour%24!=0){
                hour=hour%24+24;
            }else{
                hour=hour%24;
            }
        }
    }    
    
}

测试类:

package com.oricle.demo06;

public class Test3 {

    public static void main(String[] args) {
        MyTime t=new MyTime(10,10,-20);
        //当前时间
        t.display();
        System.out.println();
        //小时+
        t.addHour(1);
        t.display();
        //分钟+
        t.addMinute(10);
        t.display();
        //秒+
        t.addSecond(-70);
        t.display();
        System.out.println();
        //小时-
        t.subHour(1);
        t.display();
        //分钟-
        t.subMinute(10);
        t.display();
        //秒-
        t.subSecond(30);
        t.display();
        

    }
    

}

结果演示:

2.定义一个名为Vehicles(交通工具)的基类,该类中应包含String类型的成员属性brand(商标)和color(颜色),还应包含成员方法run(行驶,在控制台显示“我已经开动了”)和showInfo(显示信息,在控制台显示商标和颜色),并编写构造方法初始化其成员属性。

编写Car(小汽车)类继承于Vehicles类,增加int型成员属性seats(座位),还应增加成员方法showCar(在控制台显示小汽车的信息),并编写构造方法。

编写Truck(卡车)类继承于Vehicles类,增加float型成员属性load(载重),还应增加成员方法showTruck(在控制台显示卡车的信息),并编写构造方法。

在main方法中测试以上各类。

 Vehicles类

public class Vehicles {
    private String brand;
    private String color;
    //构造方法
    public Vehicles(String brand, String color) {
        this.brand = brand;
        this.color = color;
    }
    public void run() {
        System.out.println("我已经开动了");
    }
    public void showinfo() {
        System.out.println("商标: " + brand);
        System.out.println("颜色: " + color);
    }
}

Car(小汽车)类

public class Car extends Vehicles {
    private int seats;
    // 构造方法
    public Car(String brand, String color, int seats) {
        super(brand, color);
        this.seats = seats;
    }

    public void showCar() {
        super.showinfo();
        System.out.println("座位: " + seats + " 个");
    }
}

Truck(卡车)类

public class Truck extends Vehicles {
    private float load;

    public Truck(String brand, String color, float load) {
        super(brand, color);
        this.load = load;
    }

    public void showTruck() {
        super.showinfo();
        System.out.println("载重 :" + load + "吨");
    }
}

测试类

public class Test {

    public static void main(String[] args) {
        Vehicles vehicle = new Vehicles("奥迪","黑色");
        vehicle.showinfo();
        Car car = new Car("桑塔纳","红色", 5);
        car.showCar();
        Truck truck = new Truck("解放","蓝色",10);
        truck.showTruck();
    }

}

publicclass Truck extends Vehicles {

   privatefloatload;

 

   public Truck(String brand, String color, floatload) {

      super(brand, color);

      this.load = load;

   }

 

   publicvoid showTruck() {

      super.showinfo();

      System.out.println("载重" + load + "");

   }

}

猜你喜欢

转载自www.cnblogs.com/lzw123-/p/9376774.html