點擊返回標題->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;}@Overridevoid show() {//實現父類抽象方法//格式化輸出建議使用printfSystem.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;}@Overridevoid show() {//實現父類抽象方法//格式化輸出建議使用printfSystem.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;}@Overridevoid parameter() {System.out.printf("這是一個長方形,它的長為%.2f,寬為%.2f\n", this.length, this.width);}@Overridevoid 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;}@Overridevoid parameter() {System.out.printf("這是一個圓形,它的顏色為%s,它的半徑為%.2f\n", this.color, this.r);}@Overridevoid 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修飾,子類的權限不得小于publicreturn 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;@Overridepublic double area(double para) {this.l = para;return this.l * this.l;}
}
class Circle implements Shape{double r;@Overridepublic double area(double para) {this.r = para;return this.PI * this.r * this.r;}
}