JAVA学习笔记(6) - 类概念

JAVA学习笔记(六) - 类概念

类的创建

import java.util.*;

/*
 * 创建类-Person
 *  从具体每个人中,抽取共性的描述信息-属性(静态)
 *      name,age,gender,height,weight,ID,birthday
 *  从具体每个人中,抽取共性的动作信息-方法(动态)
 *      eat,sing,dance,sleep,talk,smile,count
 *  类中主要包含:静态的属性和动态的方法
 */
public class Person
{
    //静态的属性
    String name;
    int age;
    char gender;
    int height;
    float weight;
    String ID;
    Date birthday;
    InputStream is;
    Socket s;

    //动态的方法
    public void eat()
    {
        System.out.println("eat");
    }

    public int count(int x, int y)
    {
        return x + y;
    }
}

student类

public class Student
{
    //属性
    int sno;
    String name;
    int age;
    char gender;

    //方法
    public void study()
    {
        System.out.println("study");
    }

    public int add(int x, int y)
    {
        return x + y;
    }
    //构造函数
    public Student(){}

    public Student(int sno, String name, int age, char gender)
    {
        this.sno = sno;
        this.name = name;
        this.age = age;
        this.gender = gender;
    }


}
public class Test
{
    public static void main(String[] args)
    {
        //通过对象,使用类中的方法,属性时,通过.调用
        Student s1 = new Student();
        int result = s1.add(10, 20);
        System.out.println(result);

        /*Student s2 = new Student(1, "zhangsan", 25, '男');
        System.out.println(s2.sno);
        System.out.println(s2.name);
        System.out.println(s2.age);
        System.out.println(s2.gender);
        s2.add(10, 20);

        Student s3 = new Student(2, "lisi", 20, '女');

        s3 = s1;*/
    }
}

类的成员变量

成员变量

/*
 * 类的成员变量
    请定义一个交通工具(Vehicle)的类,包含属性:速度speed、体积size,方法:设置速度setSpeed(int speed)、
    移动move()、加速speedUp()、减速speedDown()。在测试类中实例化一个交通工具对象,通过方法初始化speed和size的值,
    并输出相关信息,调用加速、减速方法对速度进行改变。
 */
public class Vehicle
{
    int speed;
    int size;

    public Vehicle()
    {

    }
    public Vehicle(int speed, int size)
    {
        this.setSpeed(speed);
        this.setSize(size);
    }
    public void setSpeed(int speed)
    {
        this.speed = speed;
    }
    public void move()
    {

    }
    public void speedUp(int i)
    {
        speed += i;
    }
    public void speedDown(int i)
    {
        speed -= i;
    }
    public void setSize(int size)
    {
        this.size = size;
    }
}
public class Test
{
    public static void main(String[] args)
    {
        Vehicle v = new Vehicle(150, 100);
        System.out.print("车车的速度为" + v.speed + " 体积为" + v.size);
        v.speedUp(5);
        System.out.print("\n开始加速。。。\n现在的速度为" + v.speed);
        v.speedDown(5);
        System.out.print("\n开始减速。。。\n现在的速度为" + v.speed);
    }
}

类的构造方法

/*
 * 构造方法
    编写Java程序,模拟简单的计算器。定义名为Calculator的类,包含整数变量n1和n2,应声明为私有。
    编写构造方法,可以初始化n1和n2,为该类定义加addition、减subtration、乘multiplication、
    除division等公有成员方法,分别对两个成员变量执行加、减、乘、除的运算。
    在main方法中创建Calculator类的对象,调用各个方法并显示计算结果。
 */
public class Calculator
{
    private int n1;
    private int n2;

    public Calculator()
    {

    }
    //初始化成员变量
    public Calculator(int n1, int n2)
    {
        this.setN1(n1);
        this.setN2(n2);
    }
    //getter and setter 方法
    public int getN1()
    {
        return n1;
    }
    public void setN1(int n1)
    {
        this.n1 = n1;
    }
    public int getN2()
    {
        return n2;
    }
    public void setN2(int n2)
    {
        this.n2 = n2;
    }
    // '+'
    public int addition(int n1, int n2)
    {
        return n1 + n2;
    }
    // '-'
    public int subtration(int n1, int n2)
    {
        return n1 - n2;
    }
    // '/'
    public int multiplication(int n1, int n2)
    {
        return n1 / n2;
    }
    // '*'
    public int division(int n1, int n2)
    {
        return n1 * n2;
    }

}
public class Test
{

    public static void main(String[] args)
    {
        Calculator cal = new Calculator(45, 15);
        int n1 = cal.getN1();
        int n2 = cal.getN2();
        System.out.println(n1 + "+" + n2 + "=" + cal.addition(n1, n2));
        System.out.println(n1 + "-" + n2 + "=" + cal.subtration(n1, n2));
        System.out.println(n1 + "/" + n2 + "=" + cal.multiplication(n1, n2));
        System.out.println(n1 + "*" + n2 + "=" + cal.division(n1, n2));
    }

}

类的综合实例

/*
 * 类的成员变量与方法、构造方法
 * 在程序中,经常要对时间进行操作。我们可以自己实现一个时间类,来满足程序中的需要。
 *  定义名为MyTime的类,其中有三个整型变量:时hour、分minute、秒second,
 *  为了保证数据的安全性,将这三个成员变量声明为私有。为MyTime类定义构造方法,
 *  以方便创建对象时初始化成员变量。再定义diaplay方法,用于将时间信息打印出来。
 *  为MyTime类添加以下方法addHour(int hou)、addMinute(int min)、
 *  addSecond(int sec)、subHour(int hou) 、subMinute(int min)、
 *  subSecond(int sec)分别对时、分、秒进行加减运算。
 */
public class Mytime
{
    private int hour;
    private int minute;
    int second;
    /**
     * @param hour
     * @param minute
     * @param 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 Mytime()
    {
    }

    /*
     * 为MyTime类添加以下方法addHour(int hou)、addMinute(int min)、
 *  addSecond(int sec)、subHour(int hou) 、subMinute(int min)、
 *  subSecond(int sec)分别对时、分、秒进行加减运算。
     */
    //增加秒
    public int addSecond(int sec)
    {
        int day=0;
        day=addMinute((sec+this.second)/60);
        this.second=(sec+this.second)%60;
        return day;
    }
    //增加分钟
    public int addMinute(int min)
    {
        int day=0;
        day=addHour((min+this.minute)/60);
        this.minute=(min+this.minute)%60;
        return day;
    }
    //增加小时
    public int addHour(int hou)
    {
        int day=(hou+this.hour)/24;
        this.hour=(hou+this.hour)%24;
        return day;
    }
    //减少秒
    public int subSecond(int sec)
    {
        int day=0;
        this.second=this.second-sec%60; //秒数相减
        if(this.second<0) //减后秒数小于0的话
        {
            this.second+=60;  //分钟减一 秒数为正
            day=subMinute(1);  //这减去的一分是否会减去一天
        }
        day+=subHour(sec/60);  //每60分钟时钟+1
        return day;
    }
    //减少分
    public int subMinute(int min)
    {
        int day=0;
        this.minute=this.minute-min%60;
        if(this.minute<0)
        {
            this.minute+=60;
            day=subHour(1);
        }
        day+=subHour(min/60);

        return day;
    }
    //减少小时
    public int subHour(int hou)
    {
        int day=0;
        if(hou<=this.hour) //当减少的时间小于当前小时时
        {
            this.hour-=hou;
            return 0;        //天数不前移
        }
        this.hour=this.hour-hou%24;   //得到一个-24到24之间的‘时’
        if(this.hour<0)    //这个‘时’小于0的话就向后移一天,’时‘变为正数
        {
            this.hour+=24;
            day++;
        }
        day+=hou/24;
        return day;
    }
    public void show()
    {
        System.out.println(this.hour+"点"+this.minute+"分"+this.second+"秒");
    }
}
public class Test
{
    public static void main(String[] args)
    {
        Mytime mt=new Mytime(21,42,03);
        int day;
        int hour=3;
        int minute=17;
        int second=86457;
        mt.show();
        System.out.println("********************");

        day=mt.addHour(hour);
        System.out.print(hour+"小时后是");
        mt.show();
        System.out.println("这是第"+day+"天后了");

        day=mt.addMinute(minute);
        mt.show();
        System.out.println(minute+"分钟后是第"+day+"天后了");
        day=mt.addSecond(second);
        mt.show();
        System.out.println(second+"秒后是第"+day+"天后了");

        System.out.println("********************");
        day=mt.subSecond(2);
        mt.show();
        System.out.println("是第"+day+"天前了");
        day=mt.subMinute(720);
        mt.show();
        System.out.println("是第"+day+"天前了");
        day=mt.subHour(35);
        mt.show();
        System.out.println("是第"+day+"天前了");
    }
}