当前位置:   article > 正文

面向程序对象_定义一个学校人员类schoolperson,具体要求如下:私有属性:姓名name、性别sex、

定义一个学校人员类schoolperson,具体要求如下:私有属性:姓名name、性别sex、

1.1类与对象

在面向对象中,为了坐到让程序对事物的描述与事物在现实中的形态保持一致,面向对象思想中提出了两个概念,即类和对象。在Java程序中类和对象是最基本、最重要的单元。类表示某些群体的一些基本特征抽象,对象表示一个个具体的事物。

例如,在现实生活中,学生可以表示一个类,而一名具体的学生,就可以称为对象。这名具体的学生会有自己的姓名和年龄等信息,这些信息在面向对象的概念中称为属性;学生可以看书和打球,而看书和打篮球这些行为在类中就称为方法。类与对象的关系如图3-1所示。

在图3-1中,学生可以看做是一个类;小明、李华、大军都是学生类型的对象。类用于描述多个对象的共同特征,它是对象的模板。对象用于描述现实中的个体,它是类的实例。对象是根据类创建的,一个类可以对应多个对象。

1.1.1类的定义

在面向对象的思想中最核心的就是对象,而创建对象的前提是需要定义一个类,类时Java中一个重要的引用数据类型,也是组成Java程序的基本要素,所有的Java程序都是基于类的。

类是对象的抽象,用于描述一组对象的共同特征和行为。类中可以定义成员变量和成员方法,其中,成员变量也被称为对象的属性;成员方法用于描述对象的行为,可简称为方法。

类的定义格式如下:

  1. class 类名{
  2. 成员变量;
  3. 成员方法;
  4. }

根据上述格式定义一个学生类,成员变量包括姓名(name)、年龄(age)、性别(sex);成员方法包括读书(read)。学生类定义的示例代码如下:

  1. class student{
  2. string name;
  3. int age;
  4. string sex;
  5. void read(){
  6. system.out.println("大家好,我是"+ name +",我在看书!");
  7. }
  8. }

上面代码中定义了一个学生类。其中,student是类名,name、age、sex是成员变量,read()是成员方法。在成员方法read()中可以直接访问成员变量name。

在Java中,定义在类中的变量称为成员变量,定义在方法中的变量称为局部变量。如果在某一个方法中定义的局部变量与成员变量同名,这种情况是允许的,此时,在方法中通过变量名访问到的是局部变量,而并非成员变量,请阅读下面的代码示例:

  1. class student{
  2. int age =30;
  3. void read(){
  4. int age =50;
  5. system.out.println("大家好,我"+ age +"岁了,我在看书!");
  6. }
  7. }

上述代码中,在student类的read()方法中有一条打印语句,访问了变量age,此时访问的是局部变量age,也就是说当另有一个程序调用read()方法时,输出的age值为50,而不是30。

1.1.2对象的创建与使用

在1.1.1节中定义看一个student类,要想使用一个类则必须要有对象。在Java程序中可以使用new关键字创建对象,具体格式如下:

  1. 类名 对象名称 = null;
  2. 对象名称 = new 类名();

上述格式中,创建对象分为声明对象和实例化对象两步,也可以直接通过下面的方式创建对象,具体格式如下:

类名 对象名称 = new 类名();

例如,创建student类的实例对象,实例代码如下:

student stu = new student();

上述代码中,new student()用于创建student类的实例对象,student stu则是声明了一个student类型的变量stu。运算符“=”将新窗口的student对象地址赋值给变量stu,变量stu引用的对象简称为stu对象。

了解了对象的创建之后,就可以使用类创建对象了,实例代码如下:

  1. class student{
  2. string name;
  3. void read (){
  4. system.out.println("大家好,我是"+ name +",我在看书!");
  5. }
  6. }
  7. public class test{
  8. public static void main (string[] args[] ){
  9. student stu = new student();
  10. }
  11. }

上述代码在main()方法中实例化了一个student对象,对象名称为stu。使用new关键字创建的对象在堆内存空间。stu对象的内存分配如图3-2所示。

从图3-2中可以看出,对象名称stu保存在栈内存中,而对象的属性信息则宝次年在对应的堆内存中。

创建student对象后,可以使用对象访问类中的某个属性或方法,对象属性和方法的访问通过"."运算符实现,具体格式如下: 

对象名称.属性名

对象名称.方法名

 下面通过一个案例学习对象属性和方法的访问 ,如文件3-1所示

  1. //文件3-1 Example.Java
  2. class Student {
  3. String name; //声明姓名属性
  4. void read(){
  5. System.out.println("大家好,我是"+ name);
  6. }
  7. }
  8. class Example01{
  9. public static void main (String [] ages){
  10. Student stu1 = new Student (); //创建第一个Student对象
  11. Student stu2 = new Student(); //创建第二个Student对象
  12. stu1.name = "小明"; //为stu1对象的name属性
  13. stu1.read(); //调用对象的方法
  14. stu2.name ="小华";
  15. stu2 .read();
  16. }
  17. }

文件3-1运行结果如图所示:

在文件3-1中,第2~5行代码声明了一个String类型的name属性和一个read()方法,第9~10行代码创建了stu1对象和stu2对象;第11行代码为stu1对象name属性赋值;第12行代码通过stu1对象调用read()方法;第13行代码为stu2对象name属性赋值;第14行代码通过stu2对象调用read()方法。

从文件3-1所示的运行结果可以看出,stu1对象和stu2对象在调用read()方法时,打印的name值不相同。这是因为stu1和stu2 对象是两个完全独立的个体,它们分别拥有各自的name属性,对stu1对象的name属性赋值并不会影响到stu2对象name属性的值。为stu1对象和stu2对象中的属性赋值后,stu1对象stu2对象的内存变化如图3-4所示。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/237701
推荐阅读
相关标签
  

闽ICP备14008679号