繼承與多態2

2.5(楊.丹尼爾梁英文第11版P537:*13.12)(幾何對象的面積求和)寫一個方法,將數組中所有幾何對象的面積求和。

方法簽名是:
公共靜態雙求和區域(幾何對象【】a)
編寫一個測試程序,創建一個包含四個對象(兩個圓和兩個矩形)的數組,并使用sumArea方法計算它們的總面積。

package six;
import java.util.Scanner;
public class jihe {
public static void main(String[] args) {
class Circle{
public double radius,k;
public Circle(double radius,double k){
this.radius=radius;
this.k=k;
}
public double getRadius(){
return radius;
}
public double getK(){
return k;
}
public double Area() {
if(k==0) {
return Math.PI*radius*radius;}
else {
return radius*k;
}
} 
}
Scanner scanner=new Scanner(System.in);
double[] a=new double[8];
int i,j;
double s=0;
for(i=0;i<8;i++){
a[i]=scanner.nextDouble();
}
for(j=0,i=0;j<4&&i<8;j++,i+=2) {
Circle circlei=new Circle(a[i],a[i+1]);
s+=circlei.Area();
}
System.out.println("總面積為:"+s);
}
}

?2.6(由丹尼爾梁英文第11版P536:*13.11)(八邊形類)編寫一個名為八邊形的類,它擴展了地理對象,實現了可比較和可克隆接口。


假設八邊形的八條邊長度相等。面積可以用下面的公式計算:
面積=(2+4/22)×邊×邊
寫一個測試程序,創建一個八邊形對象,邊值為5,并顯示它的面積和周長。使用clone方法創建一個新對象,并使用compareTo方法比較兩個對象。

package six;
import java.util.Scanner;
interface Comparable{
int compare(EightAngle eightAngle);
}
interface Kelong{
void clone(GeometricObject geometricObject);
}
abstract class GeometricObject{
private String color = "white";
private boolean filled;
private java.util.Date dateCreated;public GeometricObject() {
dateCreated = new java.util.Date();
}public GeometricObject(String color, boolean filled) {
dateCreated = new java.util.Date();
this.color = color;
this.filled = filled;
}public String getColor() {
return color;
}public void setColor(String color) {
this.color = color;
}public boolean isFilled() {
return filled;
}public void setFilled(boolean filled) {
this.filled = filled;
}public java.util.Date getDateCreated() {
return dateCreated;
}public String toString() {
return "color: " + color + " and filled: " + filled;
}
abstract double getArea();
abstract double getPerimeter();
}
class EightAngle extends GeometricObject{
public double side;
public EightAngle(double side) {
this.side=side;
}
public double getArea() {
return (2+4.0/22)*side*side;
}
public double getPermire() {
return 8*side;
}
public int compare(EightAngle other) {
if(this.getArea()>other.getArea()) {
return 1;
} else if(this.getArea()<other.getArea()) {
return -1;
} else{
return 0;
}
}
public void clone(EightAngle other){
other.side=this.side;
} 
}
public class eightbian {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
double a=scanner.nextDouble();
double b=scanner.nextDouble();
EightAngle eightAngle1=new EightAngle(a);
EightAngle eightAngle2=new EightAngle(b);
int r=eightAngle1.compare(eightAngle2);
if(r>0) {
System.out.println("eightAngle1面積更大");
}
else if(r==0) {
System.out.println("兩個面積一樣大");
}
else {
System.out.println("eightAngle2面積更大");
}
System.out.println("面積1為:"+eightAngle1.getArea());
System.out.println("周長1為:"+eightAngle1.getArea());
System.out.println("面積2為:"+eightAngle2.getArea());
System.out.println("周長2為:"+eightAngle2.getArea());
eightAngle1.clone(eightAngle2);
System.out.println("將eightAngle1克隆給eightAngle2,此時eightAngle2的面積和周長分別為:");
System.out.println("面積2為:"+eightAngle2.getArea());
System.out.println("周長2為:"+eightAngle2.getArea());
System.out.println("將eightAngle1克隆給eightAngle2,此時eightAngle1的面積和周長分別為:");
System.out.println("面積2為:"+eightAngle1.getArea());
System.out.println("周長2為:"+eightAngle1.getArea());
}
}

?其實克隆就是把要克隆的數據賦給被克隆的數據即可

?設計一個Triangle類繼承自GeometricObject類
設計一個名為Triangle的類來擴展GeometricObject類。該類包括:

三個名為side1、side2和side3的double數據域表示這個三角形的三條邊,它們的默認值是1.0。
一個無參構造方法創建默認的三角形。
一個能創建帶制定side1、side2和side3的三角形的構造方法。
所有三個數據域的訪問器方法。
一個名為getArea()的方法返回這個三角形的面積。
一個名為getPerimeter()的方法返回這個三角形的周長。
一個名為toString()的方法返回這個三角形的字符串描述,返回的信息包括三角形的顏色、是否填充和三條邊的邊長。

package six;
import java.util.Scanner; 
//GeometricObject類 
public abstract class GeometricObject{
public static void main(String[] args) {
class Triangle extends GeometricObject{
public double side1,side2,side3;
public Triangle(){
this.side1=1.0;
this.side2=1.0;
this.side3=1.0;
}
public Triangle(double newSide1,double newSide2,double newSide3){
this.side1=newSide1;
this.side2=newSide2;
this.side3=newSide3;
}
public void setSide1(double newSide1){
this.side1=newSide1;
}
public double getSide1(){
return side1;
}
public void setSide2(double newSide2){
this.side2=newSide2;
}
public double getSide2(){
return side2;
}
public void setSide3(double newSide3){
this.side3=newSide3;
}
public double getSide3(){
return side3;
}
public double getArea(){
double l=(side1+side2+side3)/2;
return Math.sqrt(l*(l-side1)*(l-side2)*(l-side3));
}
public double getPerimeter(){
return side1+side2+side3;
}
public String toString(){
return "color: "+getColor()+" and filled: "+isFilled()+"\n"+"Triangle: side1="+side1+" side2="+side2+" side3="+side3;
}
}
Scanner input = new Scanner(System.in);
double side1 = input.nextDouble();
double side2 = input.nextDouble();
double side3 = input.nextDouble();
Triangle triangle = new Triangle(side1, side2, side3);
String color = input.next();
triangle.setColor(color);
boolean filled = input.nextBoolean();
triangle.setFilled(filled);
System.out.println("The area is " + triangle.getArea());
System.out.println("The perimeter is " + triangle.getPerimeter());
System.out.println(triangle);
}private String color = "white";
private boolean filled;
private java.util.Date dateCreated;
public GeometricObject() {
dateCreated = new java.util.Date();
}
public GeometricObject(String color, boolean filled) {
dateCreated = new java.util.Date();
this.color = color;
this.filled = filled;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public boolean isFilled() {
return filled;
}
public void setFilled(boolean filled) {
this.filled = filled;
}
public java.util.Date getDateCreated() {
return dateCreated;
}
public String toString() {
return "color: " + color + " and filled: " + filled;
}
public abstract double getArea();
public abstract double getPerimeter();
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/19424.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/19424.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/19424.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

高速數據傳輸新紀元?ADT-Link領先推出USB4轉PCIe 4.0橋接板

在科技飛速發展的今天&#xff0c;數據傳輸速度一直是推動行業進步的關鍵驅動力。最近&#xff0c;備受矚目的硬件制造商ADT-Link宣布推出一款引領潮流的新產品——USB4轉PCIe 4.0橋接板&#xff0c;這一創新設備勢必會顯著提升數據傳輸效率&#xff0c;為用戶帶來前所未有的高…

NI PXIe-7857R與PXIe-8842的區別

一、NI PXIe-7857R 類型&#xff1a; FPGA模塊&#xff1a;基于FPGA的可編程I/O模塊。 主要功能&#xff1a; FPGA處理&#xff1a;包含Xilinx Kintex-7 FPGA&#xff0c;支持自定義邏輯和處理。 I/O接口&#xff1a;提供豐富的模擬和數字I/O通道。 高速數據處理&#xff1a…

軟件測試新手要達到一個什么水平才能找到一份9K的工作?

我的讀者里有很多 軟測 新人&#xff0c;新人是指正在學 測試 的、以及工作時間不長的年輕人&#xff0c;他們經常問我一個問題&#xff1a; 自學到什么程度才能找到一份還不錯的測試工作&#xff1f; 今天我就從我自己面試新人的角度來回答一下&#xff0c;我會把面試的知識點…

查詢指定會話免打擾

查詢指定用戶&#xff08;requestId) 為指定會話&#xff08;targetId&#xff09;的設置的免打擾狀態。 提示 該設置為用戶級別設置。對應的設置接口詳見設置指定會話免打擾。 請求方法 POST&#xff1a; https://數據中心域名/conversation/notification/get.json 頻率限…

AVFrame結構體分析

AVFrame是FFmpeg中的一個核心數據結構&#xff0c;用于表示音頻或視頻的幀。它包含了一系列用于描述幀數據和元數據的字段。以下是對AVFrame結構體的詳細分析&#xff0c;包括其主要字段及其作用。 AVFrame的定義 在FFmpeg的源代碼中&#xff0c;AVFrame的定義可以在avframe.…

Nginx網頁服務

nginx的配置: 1、全局塊&#xff1a;全局配置&#xff0c;對全局生效&#xff1b; 2、events塊&#xff1a;配置影響 Nginx 服務器與用戶的網絡連接&#xff1b; 3、http塊&#xff1a;配置代理&#xff0c;緩存&#xff0c;日志定義等絕大多數功能和第三方模塊的配置&#xf…

【Python編程實踐2/3】Python圖像處理模塊(上)

目錄 引言 目標 安裝模塊 Windows系統 macOS系統 路徑 Windows路徑 ?編輯macOS路徑 windows路徑報錯 windows路徑前的r 示例代碼 windows快速查看路徑 macOS快速查看路徑 打開圖片 展示圖片 下節預告 總結 引言 歡迎各位大佬垂閱本篇Python實踐博客&a…

【教學類-59-01】專注力視覺訓練01(圓點百數圖)

背景需求&#xff1a; 視覺訓練的神奇效果&#xff0c;讓你的寶貝成為焦點 - 小紅書魔法視覺追蹤-視覺訓練—— &#x1f50d;視覺訓練&#x1f50d; &#x1f539;想要提高寶寶的專注力&#xff0c;視覺訓練是個絕佳方法&#xff01; &#x1f539;讓寶寶仔細觀察數字的路線&a…

微信小程序畢業設計-農場驛站平臺系統項目開發實戰(附源碼+論文)

大家好&#xff01;我是程序猿老A&#xff0c;感謝您閱讀本文&#xff0c;歡迎一鍵三連哦。 &#x1f49e;當前專欄&#xff1a;微信小程序畢業設計 精彩專欄推薦&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python畢業設計…

HoneyTrap蜜罐系統實踐操作@FreeBSD

HoneyTrap介紹 HoneyTrap是一個可擴展的開源系統&#xff0c;用于運行、監控和管理蜜罐。 HoneyTrap蜜罐系統通過在網絡中部署感應節點&#xff0c;實時感知周邊網絡環境&#xff0c;并將感應節點的日志進行實時存儲和可視化分析&#xff0c;從而實現對網絡環境中威脅情況的感…

Honor of Kings 2024.03.29 Ban for 3 day

我又被舉報消極然后禁賽 都說了別選蔡文姬&#xff0c;對面三個肉&#xff0c;非要選個軟輔助 吐槽下這游戲策劃&#xff1a;游戲體驗感越來越差&#xff0c;公正也很差 對說了對面4個法師&#xff0c;就是不出魔抗&#xff0c;把把都是0-N開局&#xff0c;到底誰消極啊&#x…

stable Diffusion缺失模型補充地址

Hires. fix 8x_NMKD-Superscale https://huggingface.co/uwg/upscaler/resolve/main/ESRGAN/8x_NMKD-Superscale_150000_G.pth 放置位置: \models\ESRGAN

【工具使用】在vscode中用python繪圖

安裝拓展Jupyter Keymap 然后重啟vscode在代碼之前加上這個代碼&#xff0c;利用jupyter一行一行運行 # %%點擊Run Cell即可運行 # %% import matplotlib.pyplot as plt# 提供的數據 data [0.02856750446367257, 0.248564674096589, 0.1645266594124048, 0, 0.375108941955725…

智能臺燈系統之哪種調光方式更節能?

在節能方面&#xff0c;不同的調光方式有不同的表現。 PWM調光通過反復開關驅動器來控制LED燈的實際輸出功率&#xff0c;以達到照明調光的目的。這種方式能夠在最小電流和最大電流之間進行頻繁的切換&#xff0c;從而調節照明燈具的亮度。由于LED照明光源僅處于接通或關斷兩種…

通關!游戲設計之道Day18

過場動畫&#xff0c;或者說根本沒人看的東西 過場動畫是一系列的動畫或實時的動作序列&#xff0c;用來推進劇情制造大場面&#xff0c;烘托氣氛&#xff0c;展示對話和角色成長&#xff0c;以及顯現在某些情況下被玩家忽略的相關線索。 過場動畫是一把雙刃劍&#xff0c;一方…

二叉樹鏈式結構的前序_中序_后續_層序遍歷【詳細圖解】

P. S.&#xff1a;以下代碼均在VS2019環境下測試&#xff0c;不代表所有編譯器均可通過。 P. S.&#xff1a;測試代碼均未展示頭文件stdio.h的聲明&#xff0c;使用時請自行添加。 博主主頁&#xff1a;LiUEEEEE ??????????????????? ?? …

Excel 導入

依賴 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.1.1</version></dependency> service 讀取excel文件的行數據 DataExcelListener<DeviceTemplateExcel> listener new…

MFC CList<CRect, CRect> m_listRect;的用法

CList<CRect, CRect&> 是 MFC&#xff08;Microsoft Foundation Classes&#xff09;中定義的一個雙向鏈表模板類&#xff0c;用于存儲 CRect 對象。在使用 CList 時&#xff0c;你可以執行多種操作&#xff0c;比如添加、移除、查找和遍歷元素。以下是一些常見的用法…

SAP 生產訂單報工函數BAPI_PRODORDCONF_CREATE_TT不返回報錯信息

最近財務一直反饋MES報工的數據都沒有成本,然后去查看原因發現是財務當月的KP26的價格沒有進行維護,導致沒有收集到工單的報工成本。 但是在前臺操作CO11 報工的時候,系統會給出報錯的信息 但是我們在調用函數BAPI_PRODORDCONF_CREATE_TT的時候,系統并沒有返回報錯的信息…

普通測徑儀和智能測徑儀的五大區別

在工業自動化和精密測量的領域中&#xff0c;測徑儀是不可或缺的重要工具。隨著科技的進步&#xff0c;測徑儀也在不斷地進行技術革新和升級&#xff0c;從傳統的普通測徑儀發展到如今的智能測徑儀。本文將詳細探討普通測徑儀與智能測徑儀之間的五大區別。 一、測量精度與穩定…