第七章面向对象编程【教学目的】:1、类的概念2、类的定义3、对象的定义教学内容:学生类的定义,与对象是使用。
一、类的概念Object Oriented翻译而来的,简称为OO。
Java语言与其他面向对象语言一样,引入了类和对象的概念,类是用来创建对象的模板,它包含被创建对象的属性和方法的定义。
对象就是类的一个实例人(类){姓名性别年龄地址吃饭()睡觉()上班()学习()}二、类的定义修饰符class 类名{ 成员变量成员方法}类的修饰符:public:公共的:final:最终的,不能被继承abstract:抽象的,不能被实例化。
1、成员变量变量分局部变量和成员变量区别:成员变量如果是基本类型系统会自动初始化,这个初始化的值,我们称默认值。
bytes、long、int默认值:0;long的默认值0Lfloate默认值:0Fdouble默认值:0D,char默认值:’\U0000’;Boolean默认值:flase其它:unll但是局部变量,程序必须初始化,系统不会为局部变量进行初始化工作。
class temp{public static void main(String[] args){ int a; //局部变量\\(int a;-声明,a=8;-初始化)System.out.println(a);}}这个时候程序就会成问题,因为局部变量没有初始化。
下面我们定义学生类Public class student{private String name; //定义学生姓名private String ID; //定义学生学号private String sex=""; //定义学生性别private String speci=""; //定义学生专业}2、成员方法类中的方法是用来执行执行某种行为的。
以下我们定义print成员方法。
public void print(){ String information="学生学号:"+ID+"\n学生姓名:"+name+"\n";if(!sex.equals(""))information+="性别="+sex+"\n";if(!speci.equals(""))information+="专业="+speci+"\n";information+="\n";information+="---------------------";System.out.println(information);}3、构造方法还有有一个非常特殊的方法,叫做构造方法,构造方法就是跟类同名的一个特殊的方法,构造方法的特殊之处:(1)构造方法与类名相同。
(2)一个类可以多个构造方法。
(3)一个构造方法可以有0、1个或者多个参数。
(4)构造方法没有返回值,但是可以不用写void。
(5)构造方法总是跟new一起被调用。
public student(String name,String ID){ =name;this.ID=ID;}public student(String name,String ID,String sex,String speic){ =name;this.ID=ID;this.sex=sex;this.speci=speic;}这两个构造方法同名,但是他们的参数不一样。
4、get方法(访问器)得到对象的某种状态,其特点是:(1)方法部分有返回值类型。
(2)方法声明没有参数。
(3)方法体内有返回值语句。
public String getname(){ return name;}public String getID(){ return ID;}public String getsex(){ return sex;}public String getspeci(){ return speci;}以上的程序可以得到学生的姓名,学号,性别,专业。
5、set方法(设置器)作用:修改对象的某种状态的方法。
(1)方法返回值总为void,也就是说没有返回值。
(2)方法声明至少有一个参数。
(3)方法体内肯定有赋值语句。
但是又一些保护性的字段,或者不想让使用者操纵的字段,只有访问器而没有设置器。
public void setsex(String sex){ this.sex=sex;}public void setspeci(String speci){ this.speci=speci;}对于学生的学号,和姓名,只有get方法,而没有set方法,因为对于学生而言,学生的学号和姓名只能查看,不能修改。
这种方式,就实现开了数据的封装,使数据的访问和修改处于可以控制的范围内。
6、成员变量和成员方法访问控制符public 公开的private 私有的protected 受保护的通过以上的实例,我们知道所有的成员变量最好都设置成私有的,方法最好使用public。
学生类,代码如下:class student{ private String name; //定义学生姓名private String ID; //定义学生学号private String sex=""; //定义学生性别private String speci=""; //定义学生专业//构造方法public student(String name,String ID){ =name;this.ID=ID;}public student(String name,String ID,String sex,String speic){ =name;this.ID=ID;this.sex=sex;this.speci=speic;}//访问器public String getName(){ return name;}public String getID(){ return ID;}public String getSex(){ return sex;}public String getSpeci(){ return speci;}//设置器public void setSex(String sex){ this.sex=sex;}public void setSpeci(String speci){ this.speci=speci;}//打印方法public void print(){ String information="学生学号:"+ID+"\n学生姓名:"+name+"\n";if(!sex.equals(""))information+="性别="+sex+"\n";if(!speci.equals(""))information+="专业="+speci+"\n";information+="\n";information+="---------------------";System.out.println(information);}public static void main(String[] args){student Tom=new student("Tom","2009001");Tom.print();student LI=new student("李四","2009001","女","软件技术");LI.print();System.out.println(LI.getSex());LI.setSpeci("应用日语");LI.print();}}7、静态成员变量和方法(1)静态成员变量static静态成员变量,用static修饰,它是被所有类的对象所共享。
比如学生的学校都是同一个学校,就可以定义一个静态成员变量。
成员变量:static String school="开放职业学院"; //定义学生的学校主方法:student Tom=new student("Tom","2009001");System.out.println(Tom.school);静态成员变量,可以说是类成员变量,可以直接用类来调用。
(2)静态方法在方法前加static,就变成静态方法。
一个静态方法只能访问类中的静态成员变量。
class StaticMethod{ int a=15;int b=2;public static void main(String[] args){ System.out.println(a+b);}}。