Java期末复习题之抽象类、接口
点击返回标题->23年Java期末复习-CSDN博客
第1题.
首先设计一个学生抽象类Student,其数据成员有name(姓名)、age(年龄)和degree(学位),以及一个抽象方法show()。然后由Student类派生出本科生类Undergraduate和研究生类Graduate,本科生类Undergraduate增加成员specialty(专业),研究生类增加成员direction(研究方向)。并且每个类都有show()方法,用于输出数据成员信息。请定义对象,并打印输出下列信息:
public class Main {
public static void main(String[] args) {
Undergraduate u1 = new Undergraduate("张三", 20, "本科", "计算机科学");
Undergraduate u2 = new Undergraduate("李四", 21, "本科", "物联网");
Graduate g1 = new Graduate("王五", 25, "硕士", "软件工程");
Graduate g2 = new Graduate("刘六", 36, "博士", "通信工程");
u1.show();
u2.show();
g1.show();
g2.show();
}
}
abstract class Student{
String name, degree;
int age;
abstract void show();//定义为抽象方法,Student也必须为抽象类
}
class Undergraduate extends Student{
String specialty;
Undergraduate(String name, int age, String degree, String specialty){//有参构造
this.name = name;
this.age = age;
this.degree = degree;
this.specialty = specialty;
}
@Override
void show() {//实现父类抽象方法
//格式化输出建议使用printf
System.out.printf("%s:%d,%s,%s\n",
this.name, this.age, this.degree, this.specialty);
}
}
class Graduate extends Student{
String direction;
Graduate(String name, int age, String degree, String direction){//有参构造
this.name = name;
this.age = age;
this.degree = degree;
this.direction = direction;
}
@Override
void show() {//实现父类抽象方法
//格式化输出建议使用printf
System.out.printf("%s:%d,%s,%s\n",
this.name, this.age, this.degree, this.direction);
}
}
第2题.
设计一个抽象类Graphics,它具有一个String类型参数name和两个抽象方法parameter()、area(),name用来存储图形的名称,parameter()方法用于输出图形的名称和其它属性特征,area()方法用于输出图形的面积。请用该类派生的子类实现输出一个形状为长方形、长为3宽为2和它面积以及输出一个形状为圆形、颜色为红色、半径为4和它面积。
public class Main {
public static void main(String[] args) {
Rectangle rec = new Rectangle("长方形", 3, 4);
Circle cir = new Circle("圆形", "红色", 2);
rec.parameter();
rec.area();
cir.parameter();
cir.area();
}
}
abstract class Graphics{
String name;
abstract void parameter();//用于输出图形的名称和其它属性特征
abstract void area();//用于输出图形面积
}
class Rectangle extends Graphics{
double length, width;
Rectangle(String name, double length, double width){
this.name = name;
this.length = length;
this.width = width;
}
@Override
void parameter() {
System.out.printf("这是一个长方形,它的长为%.2f,宽为%.2f\n", this.length, this.width);
}
@Override
void area() {
System.out.printf("长为%.2f,宽为%.2f的长方形的面积为%.2f\n", this.length, this.width, this.length*this.width);
}
}
class Circle extends Graphics{
double r;
String color;
Circle(String name, String color, double r){
this.name = name;
this.r = r;
this.color = color;
}
@Override
void parameter() {
System.out.printf("这是一个圆形,它的颜色为%s,它的半径为%.2f\n", this.color, this.r);
}
@Override
void area() {
System.out.printf("取PI为3.14,则半径为%.2f的圆的面积为%.2f\n", this.r, 3.14*this.r*this.r);
}
}
第3题.
设计一个接口circleInterface,要求接口中有一个定义PI的常量以及一个计算圆面积的空方法circleArea()。然后设计一个类circleClass实现该接口,通过构造函数circleClass(double r)定义圆半径,并增加一个显示圆面积的方法。最后,通过上述类生成两个半径分别为3.5、5.0的圆对象circle1、circle2进行测试。
interface circleInterface{
//注意,接口中的变量默认是public static final修饰的,方法默认是public abstract修饰的
double PI = 3.14;
double circleArea();
}
public class Main {
public static void main(String[] args) {
circleClass c1 = new circleClass(3.5);
circleClass c2 = new circleClass(5.0);
c1.show_area();
c2.show_area();
}
}
class circleClass implements circleInterface{
double r;
circleClass(double r){//有参构造设置圆半径
this.r = r;
}
public double circleArea() {//父类的方法由public修饰,子类的权限不得小于public
return this.PI * this.r * this.r;
}
void show_area() {
System.out.println(this.circleArea());
}
}
第4题.
设计一个Shape接口和它的两个实现类Square和Circle,要求如下:1)Shape接口中有一个抽象方法area(),方法接收一个double类型的参数,返回一个double类型的结果。2)Square和Circle中实现了Shape接口的area()抽象方法,分别求正方形和圆形的面积并返回。在测试类中创建Square和Circle对象,计算边长为2的正方形面积和半径为3的园面积
interface Shape{
double PI = 3.14;
//注意,接口中的变量默认是public static final修饰的,方法默认是public abstract修饰的
double area(double para);
}
public class Main {
public static void main(String[] args) {
//没有写构造方法的类,默认存在一个无参构造,
//根据题目的意思,area()方法需要接收一个参数,因此我们直接利用这个参数给Square类对象和Circle类对象设置边长和半径
//但这种方法必须要先调用area()方法给对象初始化,存在一定局限性
Square squ = new Square();
double squ_s = squ.area(2);
System.out.printf("边长为%.2f的正方形的面积为%.2f\n", squ.l, squ_s);
Circle cir = new Circle();
double cir_s = cir.area(3);
System.out.printf("半径为%.2f的圆的面积为%.2f\n", cir.r, cir_s);
}
}
class Square implements Shape{
double l;
@Override
public double area(double para) {
this.l = para;
return this.l * this.l;
}
}
class Circle implements Shape{
double r;
@Override
public double area(double para) {
this.r = para;
return this.PI * this.r * this.r;
}
}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!