Java语言中类与对象的创建
一、实验目的:
1、掌握类、对象的概念;
2、掌握对象的创建过程;
3、理解对象的隐蔽性、抽象性等特征;
4、熟练创建类、创建对象;
5、理解对象在内存的存储;
6、了解构造方法作用,掌握构造方法编写规则;
7、掌握、并熟练运用成员变量等。
二、实验要求:
1、能够根据实验题目要求设计相应的类;
2、能够根据需要,设计构造方法,设计成员变量;
3、根据要求创建对象,并进行信息处理。
三、实验内容:
创建学生类,然后用这个学生类创建一个学生对象。
(1)学生类:类名Student
成员变量:
变量含义 数据类型 变量名(自己定义)
学号 String
姓名 String
班级 String
数学成绩 int
物理成绩 int
成员方法:
①构造方法:实例化时对学生学号、姓名、班级进行初始化;
②分别编写学号、姓名、班级三个基本成员变量的set()方法和get()方法;
③编写显示学生的综合信息(学号、姓名、班级)方法,显示格式如下:学号:xxx 姓名:xxx 班级:xxxx;
④分别编写数学成绩、物理成绩两个成员变量的set()方法和get()方法;
⑤分别编写统计总成绩、统计平均成绩的totalScore()和averageScore()方法;
(2)要求:
① 按照题目要求创建Student类、要求包括成员变量,并按要求设计相应的方法;
② 编写一个学生管理类StudManagement,用其中的main()方法实现学生类的一个对象,从键盘分别输入数学成绩和和物理成绩,并调用它们的set()方法把成绩保存到对应成员变量中,通过调用totalScore()和averageScore()方法,以及三个基本成员变量的get()方法,显示所有信息。
③完成实验报告。
代码部分:
import java.util.Scanner; // 导入Scanner库实现控制台输入
class StudManagement
{
public static void main(String[] args) // 主入口函数
{
Scanner scanner = new Scanner(System.in); // 实例化Scanner
Student student = new Student(); // 实例化Student类
student.setId("202141084097"); // 利用set()方法设置学号、姓名、班级
student.setName("林鹏");
student.setCalss("数科2194");
System.out.println("请输入数学成绩:"); // 通过控制台分别输入数学成绩和物理成绩
student.setMathScore(scanner.nextInt()); //接收控制台int类型的参数
System.out.println("请输入物理成绩:");
student.setPhyScore(scanner.nextInt());
System.out.println("总成绩为:" + student.totalScore()); // 运用totalScore()方法获取总成绩
System.out.println("平均成绩为:" + student.averageScore()); // 运用averageScore()方法获取平均成绩
student.show(); // 运用show()方法获取信息
}
}
class Student
{
private String sId; // 设置成员变量,设置sId, sName, sClass为私有只能通过set()方法和get()方法才能调用
private String sName;
private String sClass;
public int iMathScore;
public int iPhyScore;
public Student(String sId, String sName, String sClass) // 定义一个含有三个参数的构造方法
{
this.sId = sId;
this.sName = sName;
this.sClass = sClass;
}
public Student() // 定义一个不含参数的构造方法,成员变量在没有赋值的情况下,系统会根据变量数据类型自动分配初始值
{
}
public void setId(String sId) // 定义三个私有成员变量的set()方法,需要接收参数,没有返回值,所以返回值类型为void
{
this.sId = sId; // 因为形参的名字与成员变量名相同所以加this.
}
public void setName(String sName)
{
this.sName = sName;
}
public void setCalss(String sClass)
{
this.sClass = sClass;
}
public String getId() // 定义三个私有成员变量的get()方法,不需要接收参数,返回值类型均为String
{
return this.sId; // 有返回值,所以用return
}
public String getName()
{
return this.sName;
}
public String getClazz()
{
return this.sClass;
}
public void show() // 定义show()方法,显示出所有信息
{
System.out.println("学号为:" + this.sId + "\t 姓名为:" + this.sName + "\t 班级为:" + this.sClass);
}
public void setMathScore(int iMathScore) // 定义两个共有变量的set()方法,需要接收参数,无返回值,所以返回值类型为void
{
this.iMathScore = iMathScore;
}
public void setPhyScore(int iPhyScore)
{
this.iPhyScore = iPhyScore;
}
public int getMathScore() // 定义两个共有变量的get()方法,不需要接收参数,返回值类型均为int
{
return this.iMathScore; // 有返回值,所以用return
}
public int getPhyScore()
{
return this.iPhyScore;
}
public int totalScore() // 定义一个计算数学和物理成绩的和的方法,不需要接收参数,返回值类型为int
{
return (this.iMathScore + this.iPhyScore); // 有返回值,所以用return
}
public int averageScore() // 定义一个计算数学和物理成绩的和的平均分的方法,不需要接收参数,返回值类型为int
{
return (this.iMathScore + this.iPhyScore)/2; // 有返回值,所以用return
}
}
运行结果:
实验小结:
实例化对象调用的方法,如果该方法无返回值类型,且输出为System.out.println(),那么在主函数中就不能在System.out.println()中调用此方法,应直接使用实例化对象.方法()的方式调用该方法。
如果想要获得一个有return值的方法的return的值,则可以在System.out.println()中调用方法,获得该值。