写在前面:面向对象编程可以理解为抽象编程,抽象,很多小伙伴看到这个词就头疼,没错,如果没有大量的编程体会和经验,我们似乎很难理解。今天小编通过学生管理系统这个可以说纵横了计算机系大学生的大学编程的这样一个程序,与大家探讨java中的类与对象。
对象与类
学生类
在现实生活中,任何一个事物都可以成为一个对象,例如:猫、狗、树、车、学生……
我们拿学生举例:
一名学生,他会有学号,姓名,年龄等状态信息。换句话说可以用名词形容这个对象的:一个姓名是xx学号为001的18岁学生
说到这里你也许会问,学生要学习怎么办?别急,方法来代替对象的行为
public class Student{
private String sno;//学号
private String Sname;//名字
private int age;//年龄
public String Learn(){
return "拼命学习中!!!"}//学习的这种行为
}
状态属性我们一般用private修饰,目的就是为了防止外界访问。访问往往面临着修改数据,你契合自身想想,别人乱改你名字,你乐不乐意。
行为方法我们一般用public修饰。
要写学生管理系统,我们必然要先建立一个学生类,有了类,才有单个学生对象吗
下面为Student类完整代码
public class Student {
private String sno;
private String sname;
private String gender;
private int age;
private double grade;
public Student(String sno,String sname,String gender,int age,double grade)
{
this.age=age;
this.gender=gender;
this.grade=grade;
this.sname=sname;
this.sno=sno;
}
public String getSno(){
return sno;
}
public void setSno(String sno) {
this.sno=sno;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname=sname;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender=gender;
}
public int getAge() {
return age;
}
public void setAge(int sno) {
this.age=age;
}
public double getGrade() {
return grade;
}
public void setGrade(double grade) {
this.grade=grade;
}
}
学过C语言的同学为了容易理解,可以错误的把这个学生类理解为学生结构体
struct Student{
char sno[10];
char sname[20];
char sgender[5];
int age;
double grade;
};
学生数组类
到这里你可能会疑问?学生数组???什么东西,这也能是类??博主其实一开始也不理解,
但是千万不能忘了抽象二字啊,这也是博主为什么标题写较深层次,这里就是一个深度,学生数组??我们先看一个整形数组!
public class MyArray{
private int[] arrayList;//不要感到陌生,int[] 也是一种数据类型和int是一个作用
//有参构造
public MyArray (int[] arrayList){
this.arrayList = arrayList;
}
//get和set,再说一遍不要觉得陌生,这些跟基本类型得状态信息是一样的
public int[] getArrayList() {
return arrayList;
}
public void setArrayList(int[] arrayList) {
this.arrayList = arrayList;
}
}
写到这里我们想,一个数整形数组我把他的类写出来了,有什么用呢,刚才的疑问感觉并没有消除多少,我们实际一点
整数数组new一个对象出来:MyArray ma = new MyArray();
朋友你要这么new的话编译器会报错的
为什么?因为你的构造器有参数,参数是什么?一个整数数组
int[] arrayList;
MyArray ma = new MyArray(arrayList);
朋友这回呢?这样就对了,为什么?因为你的构造器有参数啊
看到这里,我们来说为什么整形数组也可做为一个类!
抽象,抽象,抽象,一个整形数组,往往会有这样的需求,排个序,求个最大值什么的,那这些需求可不可以等价为行为呢,我是一个数组,我能排序,我能求最大值,我能对所有隶属于我的整形数组排序,不管数组是 int[] stu1 =new {1,2,3,4,5} 还是 int [] stu2 = {0,0,0}
只要是整形数组,我就能排序,哈哈,朋友到这里,有没有发现普适性,类与对象(is-a)的关系是不是逐渐清晰
记住一点在Java中数组是一个对象,不是简单的数据集合,像.length就是最好的佐证(前几天跟朋友讨论C语言的时候还抱怨为什么C没有.length,答案就在这里,C的数组就是一个数据集合啊)
说了这么多,我们直接上代码:
public class Student