选择题
1. | 下列不属于面向对象编程的三个特征的是 A.封装 |
---|
答案:B
2. | 【单选题】 下面叙述中哪些是不正确的 A. 使用super可以在子类中调用父类被覆盖的方法 B. Object类是所有类的根类 C. 一个类可以同时实现多个接口 D. 一个类可以同时继承多个类 |
---|
答案:D
3. | 【单选题】 下列修饰符中与访问控制无关的是()。 A)private B)public C)protected D)final |
---|
答案:D
编程题
1. 学生类继承
【问题描述】1.声明Student类,属性包括:学号,姓名,英语成绩,数学成绩和总成绩,方法包括:构造方法,get和set方法,toString方法(表示该同学成绩基本信息),sum方法(计算总成绩)以及testScore方法(计算评测成绩),其中可以取两门课程的平均分,任何一门课程成绩的改变都需要对总成绩重新计算,即每一个set方法都应该调用sum方法)。
2.声明StudentBW(班委)类,为Student类子类,在班委类中增加班委类型属性(属性值可以是,学委,文委等),然后重写testScore方法(计算评测成绩=课程平均分+3)。
3.声明StudentBZ(班长)类,为班委类子类,在班长类中增加责任属性,然后重写testScore方法(计算评测成绩=课程平均分+5)。
4.声明测试类,生成三个对象,分别属于上述三个类,调用相应方法计算每位同学的总成绩和评测成绩,并调用toString方法将各位学生信息打印出来。
【输入形式】学号 姓名 英语成绩 数学成绩
学号 姓名 英语成绩 数学成绩 班委类型
学号 姓名 英语成绩 数学成绩 班委类型 责任
【输出形式】姓名 英语 英语成绩 数学 数学成绩 评测分数 评测成绩
姓名 英语 英语成绩 数学 数学成绩 评测分数 评测成绩 班委 班委类型
姓名 英语 英语成绩 数学 数学成绩 评测分数 评测成绩 班委 班委类型值 职责 责任值
【样例输入】0001 zhangsan 80 90
0002 lisi 85 95 xuewei
0003 wangwu 90 70 banzhang fuwutongxue
【样例输出】zhangsan yingyu 80 shuxue 90 pingcefenshu 85 zongfenshu 170
lisi yingyu 85 shuxue 95 pingcefenshu 93 zongfenshu 180 banwei xuewei
wangwu yingyu 90 shuxue 70 pingcefenshu 85 zongfenshu 160 banwei banzhang zhize fuwutongxue
【样例说明】要按照相应顺序输出结果。
【评分标准】完全正确满分
代码如下:
import java.util.Scanner;
public class Homework_1 {
public static void main(String[] args) {
Student student1 = new Student();
StudentBW student2 = new StudentBW();
StudentBZ student3 = new StudentBZ();
Scanner sc = new Scanner(System.in);
//第一个学生信息
student1.setID(sc.next()) ;
student1.setName(sc.next());
student1.setEnglish_grades(sc.nextInt());
student1.setMath_grades(sc.nextInt());
System.out.println(student1.toString());
//第二个学生信息
student2.setID(sc.next()) ;
student2.setName(sc.next());
student2.setEnglish_grades(sc.nextInt());
student2.setMath_grades(sc.nextInt());
student2.setCommittee(sc.next());
System.out.println(student2.toString());
//第三个学生信息
student3.setID(sc.next()) ;
student3.setName(sc.next());
student3.setEnglish_grades(sc.nextInt());
student3.setMath_grades(sc.nextInt());
student3.setCommittee(sc.next());
student3.setResponsibility(sc.next());
System.out.println(student3.toString());
sc.close();
}
}
class Student{
private String ID;//学号
private String name;//姓名
private int English_grades;//英语成绩
private int Math_grades;//数学成绩
private int totalScore;//
public void setID(String ID) {
this.ID = ID;
}
public String getID() {
return ID;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setEnglish_grades(int English_grades) {
this.English_grades = English_grades;
sum();
}
public int getEnglish_grades() {
return English_grades;
}
public void setMath_grades(int Math_grades) {
this.Math_grades = Math_grades;
sum();
}
public int getMath_grades() {
return Math_grades;
}
public int getTotalScore() {
return totalScore;
}
//评测分数为平均分数
//评测成绩为总分数
public String toString(){
return getName()+" yingyu "+getEnglish_grades()+" shuxue "+getMath_grades()+" pingcefenshu "+testScore()+" zongfenshu "+getTotalScore();
}
public void sum(){
this.totalScore = this.English_grades+this.Math_grades;
}
public int testScore(){
return (English_grades+Math_grades)/2;
}
}
class StudentBW extends Student{
private String committee;//班委
public void setCommittee(String committee) {
this.committee = committee;
}
public String getCommittee() {
return committee;
}
public int getTestScore(){
return super.testScore();
}
public int testScore(){
return getTestScore()+3;
}
public String toString(){
return super.toString()+" banwei "+getCommittee();
}
}
class StudentBZ extends StudentBW{
private String responsibility;
public void setResponsibility(String responsibility) {
this.responsibility = responsibility;
}
public String getResponsibility() {
return responsibility;
}
public int getTestScore(){
return super.getTestScore();
}
public int testScore(){
return getTestScore()+5;
}
public String toString(){
return super.toString()+" zhize "+getResponsibility();
}
}
接口编程题
1. 计算手机话费
【问题描述】
定义一个接口PayAble,包含计算电话话费的方法pay()。定义电话类Phone,包含属性有通话时间time,话费单价price。电话类实现PayAble接口计算话费。话费计算方法:
电话类话费=通话时间*话费单价。
【输入形式】输入通话时长,话费单价
【输出形式】话费
【样例输入】120 0.6
【样例输出】Fee=72.0
【样例说明】
【评分标准】完全正确,满分
提供的PayAble接口如下:
public interface PayAble {
public double pay();
}
代码如下:
import java.util.Scanner;
public class Homework_2
{
public static void main(String[] args) {
Phone phone = new Phone();
Scanner sc = new Scanner(System.in);
phone.time = sc.nextDouble();
phone.price = sc.nextDouble();
System.out.print("Fee="+phone.pay());
}
}
class Phone implements PayAble {
double time;
double price;
@Override
public double pay() {
return time*price;
}
}
2.显示Person子类教师类信息
【问题描述】
设计教师类Teacher ,继承类Person,显示教师姓名和工资。同时定义测试类Test如下:
public class Test{
public static void main(String [] args){
Teacher t = new Teacher("wang", 45, 5200);
t.display();
}
}
增加Teacher 类,运行Test类。
【输入形式】无
【输出形式】
Name=wang
Salary=5200.0
提供的Person类如下:
public class Person{
private String name;
private int age;
public Person(String name, int age){
this.name = name;
this.age = age;
}
public void display(){
System.out.println("Name=" + name);
}
}
代码如下:
public class Test{
public static void main(String [] args){
Teacher t = new Teacher("wang", 45, 5200);
t.display();
}
}
class Teacher extends Person {
private double salaries;
public Teacher(String name,int age,double salaries){
super(name,age);
this.salaries = salaries;
}
public void display(){
super.display();
System.out.println("Salary="+salaries);
}
}
博主java萌新,有问题可评论区共同交流学习,欢迎大家交流awa