编写一个学生父类,该类有抽象方法计算成绩和抽象方法显示成绩,该类有两个子类英语专业学生和计算机专业学生。 英语专业学生的考核成绩包括:演讲(50%),期末考试(50%)。 计算机专业学生的考核成绩包括:编程能力测试(70%),期末考试(30%)。 在主类中声明一个学生类的数组,有4个学生,分别用子类的英语专业学生和计算机专业的学生子类构造,对数组中学生的分数进行排序。在主类中显示信息如下: 学号:XXXXXXXX 姓名:XXX 性别:X 年龄:XX 综合成绩:XX

时间: 2024-01-01 15:06:56 浏览: 27
好的,根据你的问题,我编写了以下代码: ```java // 学生类 abstract class Student { private String id; // 学号 private String name; // 姓名 private String gender; // 性别 private int age; // 年龄 private double score; // 成绩 // 构造函数 public Student(String id, String name, String gender, int age) { this.id = id; this.name = name; this.gender = gender; this.age = age; } // 计算成绩的抽象方法 public abstract void calcScore(); // 显示成绩的抽象方法 public abstract void showScore(); // 获取学号 public String getId() { return id; } // 获取姓名 public String getName() { return name; } // 获取性别 public String getGender() { return gender; } // 获取年龄 public int getAge() { return age; } // 获取成绩 public double getScore() { return score; } // 设置成绩 public void setScore(double score) { this.score = score; } } // 英语专业学生类 class EnglishStudent extends Student { private double speechScore; // 演讲成绩 private double finalExamScore; // 期末考试成绩 // 构造函数 public EnglishStudent(String id, String name, String gender, int age, double speechScore, double finalExamScore) { super(id, name, gender, age); this.speechScore = speechScore; this.finalExamScore = finalExamScore; } // 计算成绩 public void calcScore() { setScore(speechScore * 0.5 + finalExamScore * 0.5); } // 显示成绩 public void showScore() { System.out.println("学号:" + getId() + " 姓名:" + getName() + " 性别:" + getGender() + " 年龄:" + getAge() + " 综合成绩:" + getScore()); } } // 计算机专业学生类 class ComputerStudent extends Student { private double codingTestScore; // 编程能力测试成绩 private double finalExamScore; // 期末考试成绩 // 构造函数 public ComputerStudent(String id, String name, String gender, int age, double codingTestScore, double finalExamScore) { super(id, name, gender, age); this.codingTestScore = codingTestScore; this.finalExamScore = finalExamScore; } // 计算成绩 public void calcScore() { setScore(codingTestScore * 0.7 + finalExamScore * 0.3); } // 显示成绩 public void showScore() { System.out.println("学号:" + getId() + " 姓名:" + getName() + " 性别:" + getGender() + " 年龄:" + getAge() + " 综合成绩:" + getScore()); } } // 主类 public class Main { public static void main(String[] args) { // 创建学生数组 Student[] students = new Student[4]; students[0] = new EnglishStudent("1001", "张三", "男", 20, 80, 90); students[1] = new EnglishStudent("1002", "李四", "女", 21, 70, 95); students[2] = new ComputerStudent("1003", "王五", "男", 22, 85, 80); students[3] = new ComputerStudent("1004", "赵六", "女", 23, 90, 75); // 计算成绩并排序 for (int i = 0; i < students.length; i++) { students[i].calcScore(); } Arrays.sort(students, (s1, s2) -> Double.compare(s2.getScore(), s1.getScore())); // 显示信息 for (int i = 0; i < students.length; i++) { students[i].showScore(); } } } ``` 这段代码实现了一个学生父类,该类有抽象方法计算成绩和抽象方法显示成绩,该类有两个子类英语专业学生和计算机专业学生。在主类中声明一个学生类的数组,有4个学生,分别用子类的英语专业学生和计算机专业的学生子类构造,对数组中学生的分数进行排序,并根据要求显示信息。

相关推荐

编写一个名为TwoDimensionalShape的抽象类,拥有属性area和circumference表示面积和周长,以及抽象方法getArea()和getCircumference(),用于获取面积和周长。 2、 编写Printable接口,包括一个抽象方法printShapeInfo,用于输出图形信息。 3、 分别编写Rectangle、Triangle、Circular三个类,用于描述矩形、三角形和圆形,要求继承于TwoDimensionalShap类,并实现Printable接口,每个图形有各自的构造方法,矩形有length和width字段表示长和宽,三角形有base、hypotenus1和hypotenus2字段表示底和两条斜边,圆形有radius字段表示半径,按几何常识实现父类中所定义的抽象方法,printShapeInfo方法要求能够输出: (1) 图形的类型(使用getClass方法) (2) 图形的基本数据(使用自定义toString方法,输出图形的字段,输出示例:宽3.0, 长4.0) 4、 编写一个名为ShapeDetector的类,拥有三个重载的detectShape方法,分别为detectShape(Rectangle r)、detectShape(Triangle t)、detectShape(Circular c),分别输出所接收到的图形的类型。 5、 编写Test类,创建一个名为Shapes的TwoDimensionalShape型数组,并创建Rectangle、Triangle、Circular的对象存储在该数组中,用foreach循环遍历该数组,使用detectShape方法输出该对象的图形类型,用printShapeInfo方法输出该对象的图形信息,然后分别用getArea和getCircumference方法输出面积及周长。

某公司的雇员分为3类,每类员工都有相应的封装类,类的信息如下所示。(1) Employee:这是所有员工总的父类。① 属性:员工的姓名,员工的生日月份② 方法:getSalary(int month) ,参数为月份,如果该月是员工的生日,则公司会额外奖励100 元,否则默认返回0。(2) SalariedEmployee:Employee 的子类,拿固定工资的员工。① 属性:月薪。(3) SalesEmployee:Employee 的子类,销售,工资由月销售额和提成率决定。① 属性:月销售额、提成率。(4) BasePlusSalesEmployee:SalesEmployee 的子类,有固定底薪的销售人员,工资由底薪加上销售提成部分。① 属性:底薪。(5)另创建一个Company类,该类有一个属性为Employee数组,用于存储公司的员工对象。有一个displaySalay(int month),输出:xxx(姓名)x月的工资是:xxx.xx元(保留两位小数)本题要求根据上述雇员分类,编写一个程序,满足一下要求:(1)不允许有public和默认属性,根据需求,使用protected和private修饰属性;(2)每个类必须有一个全参数的构造函数;(3)合理使用this和super关键字访问属性、方法和构造函数;(4)在main方法里创建若干个Employee的子类的对象,并将这些存入一个Employee 数组;(5)以步骤(4)中的Employee数组为参数,创建一个Company的对象,调用该对象的displaySalay(int month)方法输出所有员工某月的工资。

最新推荐

recommend-type

实验04 Java面向对象编程2.doc

定义一个子类Student继承类Person并实现接口Achievement,增加数据成员:语文成绩chnScore、数学成绩mathScore和英语成绩engScore,增加设置三门课成绩的setScore()方法,并实现接口Achievement的计算平均分的抽象...
recommend-type

net学习笔记及其他代码应用

声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其...
recommend-type

Java面试笔试资料大全

70、TreeSet里面放对象,如果同时放入了父类和子类的实例对象,那比较时使用的是父类的compareTo方法,还是使用的子类的compareTo方法,还是抛异常! 48 71、说出一些常用的类,包,接口,请各举5个 49 72、java中有...
recommend-type

ssh(structs,spring,hibernate)框架中的上传下载

 我们前面已经指出Oracle的Lob字段和一般类型的字段在操作上有一个明显的区别--那就是你必须首先通过Oracle的empty_blob()/empty_clob()初始化Lob字段,然后获取该字段的引用,通过这个引用更改其值。所以要完成对...
recommend-type

软考-考生常见操作说明-202405101400-纯图版.pdf

软考官网--2024常见操作说明:包括如何绘制网络图、UML图、表格等 模拟作答系统是计算机技术与软件专业技术资格(水平)考试的电子化考试系统界面、作答过程的仿真系统,为各级别、各资格涉及输入和页面显示的部分题型提供体验性练习。
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

解释minorization-maximization (MM) algorithm,并给出matlab代码编写的例子

Minorization-maximization (MM) algorithm是一种常用的优化算法,用于求解非凸问题或含有约束的优化问题。该算法的基本思想是通过构造一个凸下界函数来逼近原问题,然后通过求解凸下界函数的最优解来逼近原问题的最优解。具体步骤如下: 1. 初始化参数 $\theta_0$,设 $k=0$; 2. 构造一个凸下界函数 $Q(\theta|\theta_k)$,使其满足 $Q(\theta_k|\theta_k)=f(\theta_k)$; 3. 求解 $Q(\theta|\theta_k)$ 的最优值 $\theta_{k+1}=\arg\min_\theta Q(
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。