抽象、归纳并定义学生类,生成学生类的对象并对对象进行操作。定义一个学生类Student,成员变量包括:姓名、性别和出生日期,定义一个方法来获取学生的年龄。在增加一个类变量“专业”和类方法“实现打印学生的相关信息”。 java
时间: 2024-09-19 14:06:46 浏览: 142
Java面向对象程序设计:类的定义,静态变量,成员变量,构造函数,封装与私有,this概念与用法详解
在Java中,我们可以创建一个名为"Student"的抽象类,用于描述学生的基本属性和行为。由于抽象类可以包含抽象方法,它不允许实例化,主要用于作为其他具体类的父类。
首先,我们定义一个抽象类`Student`:
```java
public abstract class Student {
// 成员变量
private String name;
private char gender; // 'M' for male, 'F' for female
private Date birthDate;
// 构造函数
public Student(String name, char gender, Date birthDate) {
this.name = name;
this.gender = gender;
this.birthDate = birthDate;
}
// 抽象方法获取年龄
public abstract int getAge();
// 类变量 "专业"
protected String major;
// 类方法 "实现打印学生的信息"
public void printStudentInfo() {
System.out.println("Name: " + name);
System.out.println("Gender: " + gender);
System.out.println("Birth Date: " + birthDate);
System.out.println("Major: " + major);
}
}
```
接下来,我们可以创建一个具体的子类`UndergraduateStudent`或`GraduateStudent`来实现`getAge()`方法,并添加实际的专业信息:
```java
public class UndergraduateStudent extends Student {
// 初始化专业
private String major;
// 构造函数,传递专业信息
public UndergraduateStudent(String name, char gender, Date birthDate, String major) {
super(name, gender, birthDate);
this.major = major;
}
// 实现抽象方法获取年龄
@Override
public int getAge() {
Calendar calendar = Calendar.getInstance();
calendar.setTime(birthDate);
return calendar.get(Calendar.YEAR) - calendar.get(Calendar.YEAR_OFCentury); // 减去世纪部分
}
}
// 使用Student对象
public static void main(String[] args) {
UndergraduateStudent student = new UndergraduateStudent("张三", 'M', new Date(), "计算机科学");
student.printStudentInfo(); // 打印学生信息
// 如果需要,可以继续添加其他子类如 GraduateStudent 并处理成年后的年龄计算
}
```
阅读全文