我们在  面向对象①中学习了,结构化程序设计。

今天我们一起学习面向对象程序设计。

学习面向对象程序设计就要了解,在面向对象中重要的知识点。

继承  、  多态   、 抽象  、 接口

我们会在接下来的课程中一一学习。

 

今天的任务是,修改 面向对象① 中的Student类,进行面向对象程序设计。

Student类

public class Student {
    public final static byte MALE = 0;    
    public final static byte FEMALE = 1;
    public final static byte UNDERGRAFUATION = 0;
    public final static byte SPECIAL = 0;

    private String name;     //学生姓名
    private byte sex;     // 性别(性别男、女)
    private byte level;  //学历水平(本科 专科)
    private int grade;   //年级
    //  私有的外界不能访问,需要通过getter  setter方法访问


    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSex() {
        return sex==MALE?"":"";
    }

    public void setSex(byte sex) {
        if (sex!=0&&sex!=1){
            return;
        }
        this.sex = sex;
    }

    public String getLevel() {
        return level==1?"本科":"专科";
    }

    public void setLevel(byte level) {
        if (level!=0&&level!=1){
            return;
        }
        this.level = level;
    }

    public int getGrade() {
        return grade;
    }

    public void setGrade(int grade) {
        this.grade = grade;
    }

    /**
     * 初始化
     */
    public void init(){
        name = "张三";
        sex = MALE;
        level = SPECIAL;
        grade = 3;
    }
    /**
     * 升级
     */
    public  void upgrade(){
        grade++;
        if (level==1&&grade>4){
            grade = 4;
        }
        if (level==0&&grade>3){
            grade = 3;
        }
    }

    public  void downgrade(){
        grade--;
        grade = grade<1?1:grade;
    }

    /**
     * 输出函数,输出学生的信息。
     */
    public  void print(){
        System.out.println("输出姓名:"+name);
        System.out.println("输出性别:"+getSex());
        System.out.println("输出学历:"+getLevel());
        System.out.println("输出年级:"+grade);
    }
    
}

测试主函数:

public class Test {

    public static void main(String[] args) {
        Student stu = new Student();
        stu.init(); //函数赋值 

        stu.print();
        System.out.println();

        stu.upgrade();
        stu.print();
    }

}

测试结果:

输出结果和上一篇案例2的输出结果一致。

 

我们修改了上一篇的性别,学历水平表示方法。

发现不用修改多处信息,这就是面向对象的好处。

 

总结一下学习的新知识点。

性别用byte,  使用的好处是,byte储存空间大小位1字节,不易出错。

私有变量是属于类自己的,外界要的到只能通过getter 和 setter方法。

getter和setter方法快速生成如下图所示:

 

在编译器上右击--->选择generate---->点击Getter and Setter---->选择私有变量

然后就得到了Getter and Setter方法。    

性别跟学历是byte类型,如果我们想要返回(return)一个字符串,就要把函数的类型改成String。