zoukankan      html  css  js  c++  java
  • 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 + "");

       }

    }

  • 相关阅读:
    P2765 魔术球问题 网络流二十四题重温
    搬东西 dp
    Q
    P2774 方格取数问题 网络流重温
    2019牛客暑期多校训练1
    E. A Simple Task
    Codeforces Round #575 (Div. 3) 昨天的div3 补题
    自动化测试如何准备测试数据
    金三银四,资深HR给面试者的十大建议
    我的自动化测试之路[转载]
  • 原文地址:https://www.cnblogs.com/lzw123-/p/9376774.html
Copyright © 2011-2022 走看看