我们在 面向对象①中学习了,结构化程序设计。
今天我们一起学习面向对象程序设计。
学习面向对象程序设计就要了解,在面向对象中重要的知识点。
继承 、 多态 、 抽象 、 接口
我们会在接下来的课程中一一学习。
今天的任务是,修改 面向对象① 中的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。