面向对象的三大特征:封装、继承和多态,本实验任务需要大家掌握封装(private)。 要求:封装学生类(Student),属性包括:姓名、年龄、体重、成绩、性别、国籍;国籍属于静态属性,性别一旦定义赋值不能被修改;编写测试类,给属性赋值并在控制台输出属性值
时间: 2024-12-08 14:20:42 浏览: 16
在面向对象编程中,封装是一种重要的设计原则,它将数据和操作这些数据的方法组合在一起,形成一个独立的对象,隐藏内部细节。在这个任务中,我们将创建一个名为`Student`的类,用于封装学生的相关信息:
```java
public class Student {
// 封装属性:姓名、年龄、体重、成绩、性别(静态属性)、国籍
private String name;
private int age;
private double weight;
private double grade;
// 静态属性 - 国籍,这里假设为字符串类型
private static String nationality;
// 构造函数,初始化属性
public Student(String name, int age, double weight, double grade, String nationality) {
this.name = name;
this.age = age;
this.weight = weight;
this.grade = grade;
Student.nationality = nationality; // 设置国籍
}
// 获取和设置属性的方法,提供访问权限
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
if (age > 0) { // 确保年龄非负
this.age = age;
} else {
System.out.println("年龄不能为负数");
}
}
public double getWeight() {
return weight;
}
public void setWeight(double weight) {
if (weight >= 0) { // 确保体重非负
this.weight = weight;
} else {
System.out.println("体重不能为负数");
}
}
public double getGrade() {
return grade;
}
public void setGrade(double grade) {
if (grade >= 0 && grade <= 100) { // 确保成绩在有效范围内
this.grade = grade;
} else {
System.out.println("成绩必须在0到100之间");
}
}
// 对于静态属性国籍的获取方法
public static String getNationality() {
return nationality;
}
}
```
接下来,我们可以编写一个测试类来实例化并操作这个`Student`对象:
```java
public class TestStudent {
public static void main(String[] args) {
// 创建学生对象
Student student = new Student("张三", 18, 75, 90, "中国");
// 输出学生属性值
System.out.println("姓名:" + student.getName());
System.out.println("年龄:" + student.getAge());
System.out.println("体重:" + student.getWeight());
System.out.println("成绩:" + student.getGrade());
System.out.println("国籍:" + Student.getNationality());
// 修改不可变属性尝试
try {
student.setGender("Male"); // 这会抛出异常,因为性别是静态属性,不可更改
} catch (Exception e) {
System.out.println(e.getMessage());
}
// 更改国籍
Student.setNationality("美国");
System.out.println("更新后的国籍:" + Student.getNationality());
}
}
```
阅读全文