要求Subject为抽象类
时间: 2024-06-17 19:06:34 浏览: 5
抽象类是一种不能被实例化的类,它只能用作其他类的基类。抽象类中定义了一些抽象方法,这些方法没有具体的实现,而是留给子类去实现。在C++中,通过将一个或多个成员函数声明为纯虚函数,就可以定义抽象类。抽象类中的纯虚函数必须在子类中被重写。
如果一个类需要被作为基类使用,但是它自己并不完整或不可实例化,那么就可以将它定义为抽象类。抽象类通常用于定义一组通用的方法和属性,以便子类可以继承并实现这些方法和属性。抽象类的主要目的是为了提供一种接口,以便子类可以通过继承和重写来实现自己的功能。
相关问题
用java 定义抽象类Person、派生类Student和类Teacher
好的,以下是用 Java 定义抽象类 `Person`、派生类 `Student` 和类 `Teacher` 的代码实现:
```java
// 定义抽象类 Person
public abstract class Person {
protected String name; // 姓名
protected int age; // 年龄
// 构造方法
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// 定义抽象方法 sayHello
public abstract void sayHello();
}
// 定义派生类 Student
public class Student extends Person {
private String school; // 学校
// 构造方法
public Student(String name, int age, String school) {
super(name, age);
this.school = school;
}
// 实现抽象方法 sayHello
@Override
public void sayHello() {
System.out.println("我是学生,我的名字是" + this.name + ",我今年" + this.age + "岁,我在" + this.school + "上学。");
}
}
// 定义类 Teacher
public class Teacher extends Person {
private String subject; // 教授科目
// 构造方法
public Teacher(String name, int age, String subject) {
super(name, age);
this.subject = subject;
}
// 实现抽象方法 sayHello
@Override
public void sayHello() {
System.out.println("我是老师,我的名字是" + this.name + ",我今年" + this.age + "岁,我教授的科目是" + this.subject + "。");
}
}
```
以上代码中,`Person` 类是一个抽象类,其中定义了两个属性 `name` 和 `age`,以及一个抽象方法 `sayHello`。`Student` 类和 `Teacher` 类都是 `Person` 类的派生类,它们分别添加了自己的属性 `school` 和 `subject`,并实现了 `Person` 类中的抽象方法 `sayHello`。这样,我们就可以通过 `Student` 类和 `Teacher` 类来创建不同的对象,同时也可以调用 `Person` 类中的方法。
使用JAVA编写程序定义考试类 Exam ,成员变量有学号 sno 、课程 subject ,其中 subject 是抽象类 Course 声明的变量,方法 query ()输出学号和课程的考试信息。 定义抽象类 Course ,成员变量有课程名 cname 、学分 credit ,包含一个抽象方法 getInfo (),用于获取课程的考试信息。 定义必修课程类 Required ,该类是 Course 类的子类,成员变量有成绩1、成绩2,重写 getInfo ()方法,计算总成绩=成绩1*0.3+成绩2*0.7,返回课程名、学分和总成绩。 编写主类,创建一个考试对象,输出学号和课程的考试信息。
好的,这是一个关于JAVA编程的问题。根据题目要求,我们需要定义一个 Exam 类,其中包含学号 sno 和课程 subject 两个成员变量,其中 subject 是抽象类 Course 声明的变量。同时,我们还需要定义一个抽象类 Course,其中包含课程名 cname 和学分 credit 两个成员变量,以及一个抽象方法 getInfo(),用于获取课程的考试信息。我们还需要定义一个必修课程类 Required,该类是 Course 类的子类,包含成绩1和成绩2两个成员变量,重写 getInfo() 方法,计算总成绩并返回课程名、学分和总成绩。最后,我们需要编写主类,创建一个考试对象,输出学号和课程的考试信息。
下面是代码实现:
```
// 定义抽象类 Course
abstract class Course {
String cname; // 课程名
int credit; // 学分
// 抽象方法 getInfo,用于获取课程的考试信息
abstract String getInfo();
}
// 定义必修课程类 Required,该类是 Course 类的子类
class Required extends Course {
int score1; // 成绩1
int score2; // 成绩2
// 重写 getInfo() 方法,计算总成绩并返回课程名、学分和总成绩
String getInfo() {
double totalScore = score1 * 0.3 + score2 * 0.7;
return "课程名:" + cname + ",学分:" + credit + ",总成绩:" + totalScore;
}
}
// 定义考试类 Exam
class Exam {
String sno; // 学号
Course subject; // 课程
// 构造函数,初始化学号和课程
Exam(String sno, Course subject) {
this.sno = sno;
this.subject = subject;
}
// 输出学号和课程的考试信息
void query() {
System.out.println("学号:" + sno + "," + subject.getInfo());
}
}
// 主类
public class Main {
public static void main(String[] args) {
// 创建一个必修课程对象
Required course = new Required();
course.cname = "Java编程";
course.credit = 3;
course.score1 = 80;
course.score2 = 90;
// 创建一个考试对象
Exam exam = new Exam("20210001", course);
// 输出学号和课程的考试信息
exam.query();
}
}
```
输出结果为:
```
学号:20210001,课程名:Java编程,学分:3,总成绩:86.0
```
相关推荐
![application/x-zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)