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;}@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;}
}

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

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

相關文章

js moment計算當前時間到24:00:00的剩余時間

2023.12.7今天我學習了如何計算當前的時間到24:00:00剩下的時間,https://momentjs.cn/ const now moment(); // 獲取當前時間const endOfDay moment().endOf(day); // 設置當天的 23:59:59const duration moment.duration(endOfDay.diff(now)); // 計算剩余時間的…

第 7 部分 — 增強 LLM 安全性的策略:數學和倫理框架

一、說明 增強大型語言模型 (LLM) 安全性的追求是技術創新、道德考慮和實際應用的復雜相互作用。這項努力需要一種深入而富有洞察力的方法,將先進的數學模型與道德原則和諧地融合在一起,以確保LLM的發展不僅在技術上穩健,而且在道德上合理且對…

C#winform點擊按鈕下載數據庫中表的字段到Excel上

C#winform點擊按鈕下載數據庫中表的字段到Excel上 需求:C#winform點擊按鈕下載數據庫中表的字段到Excel,并計算下載消耗的時間以及文件存放位置。 C#實現 using System; using System.Data; using System.Data.OleDb; using System.Data.SqlClient; u…

Flutter 如何更新showModalBottomSheet 中的數據

showDialog(context: context,builder: (context) {String label test;//StatefulBuilderreturn StatefulBuilder(//在這里為了區分,在構建builder的時候將setState方法命名為了setDialogState。builder: (context, setDialogState) {print(label $label);return …

【LeetCode】268. 丟失的數字

268. 丟失的數字 難度:簡單 題目 給定一個包含 [0, n] 中 n 個數的數組 nums ,找出 [0, n] 這個范圍內沒有出現在數組中的那個數。 示例 1: 輸入:nums [3,0,1] 輸出:2 解釋:n 3,因為有 3…

[Makefile] include 關鍵字

在 Makefile 中,include 關鍵字的作用是引入其他文件的內容,通常用于將其他 Makefile 文件(通常是頭文件)的內容包含到當前的 Makefile 中。這樣可以實現模塊化管理和代碼重用。 include使用 使用 include 關鍵字的語法如下&…

網絡攻擊(一)--安全滲透簡介

1. 安全滲透概述 目標 了解滲透測試的基本概念了解滲透測試從業人員的注意事項 1.1. 寫在前面的話 在了解滲透測試之前,我們先看看,信息安全相關的法律是怎么樣的 中華人民共和國網絡安全法 《中華人民共和國網絡安全法》由全國人民代表大會常務委員會…

Spring Cloud切換內嵌Tomcat為寶蘭德Application Server

目錄 替換Tomcat中間件Tomcat是什么Spring Cloud剔除tomcat引入寶蘭德Application Server打包運行授權導入 替換Tomcat中間件 Tomcat是什么 Spring Cloud剔除tomcat <!--集成springmvc框架 --><dependency><groupId>org.springframework.boot</groupId&…

Boost:asio多io_service,多線程run

多io_service,多線程run,相當于多個線程分別處理注冊在不同io_service上的回調,也就是每個線程排某個io_service的異步處理: //mio_mth.cpp #include <boost/asio.hpp> #include <boost/date_time/posix_time/posix_time_types.hpp> #include <iostream>…

MAC PHP版本安裝問題

安裝php 7.4版本不成功 Error: php7.4 has been disabled because it is a versioned formula! 因為php7.4官方已經不再維護&#xff0c;所以Hombrew將該php版本移出了repository&#xff0c;所以安裝不了。 解決辦法 從第三方倉庫中安裝 //將第三方倉庫加入brew brew tap sh…

7.1 C++11指針空值—nullptr

一、NULL和nullptr區別 NULL是宏定義&#xff0c;nullptr是關鍵字。 #ifndef NULL#ifdef __cplusplus#define NULL 0#else#define NULL ((void *)0)#endif #endif nullptr可以隱式轉換為任意指針類型&#xff0c;而NULL需要顯示轉換 void func(char *) {std::cout <<…

Java安全之Commons Collections6分析

CC6分析 import org.apache.commons.collections.*; import org.apache.commons.collections.functors.ChainedTransformer; import org.apache.commons.collections.functors.ConstantTransformer; import org.apache.commons.collections.functors.InvokerTransformer; impo…

Flask 動態路由、請求數據接收、視圖函數返回值詳解

一、動態路由 在前面的博客中&#xff0c;我們學習了如何創建基本的 Flask 應用&#xff0c;并定義了一些簡單的路由。但有時候&#xff0c;我們需要更加靈活的路由&#xff0c;能夠根據用戶請求的不同來動態生成響應。Flask 提供了動態路由的功能&#xff0c;使我們能夠輕松處…

上網監控軟件——安全與隱私的平衡

網絡已經成為人們生活和工作中不可或缺的一部分。然而&#xff0c;隨著網絡使用的普及&#xff0c;網絡安全問題也日益突出。上網監控軟件作為網絡安全領域的一個重要組成部分&#xff0c;在保護企業和家庭網絡安全方面發揮著重要作用。 本文將探討上網監控軟件的背景、功能、優…

我的Android播放器封裝經驗

近段時間&#xff0c;電視家不能用了&#xff0c;好吧&#xff0c;自己開發一個APP。其實也不是開發&#xff0c;而是基于現有的播放器核心自己封裝一個&#xff0c;只要能夠非常方便操作觀看電視就好。 當然&#xff0c;前提是要有節目源&#xff0c;這個我早已完成&#xff…

1-2算法基礎-常用庫函數

1.排序 sort(first,last,cmp) first指向要排序范圍的第一個元素&#xff0c;從0起 last指向要排序范圍的最后一個元素的下一個位置 cmp&#xff08;可選&#xff09;&#xff0c;自定義函數&#xff0c;默認從小到大 評測系統 #include <iostream> #include<algorith…

Java一對一聊天

服務端 package 一對一用戶;import java.awt.BorderLayout; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.util.Vector;…

three.js 入門三:buffergeometry貼圖屬性(position、index和uvs)

環境&#xff1a; three.js 0.159.0 一、基礎知識 geometry&#xff1a;決定物體的幾何形狀、輪廓&#xff1b;material&#xff1a;決定物體呈現的色彩、光影特性、貼圖皮膚&#xff1b;mesh&#xff1a;場景中的物體&#xff0c;由geometry和materia組成&#xff1b;textu…

十五、機器學習進階知識:K-Means聚類算法

文章目錄 1、聚類概述2、K-Means聚類算法原理3、K-Means聚類實現3.1 基于SKlearn實現K-Means聚類3.2 自編寫方式實現K-Means聚類 4、算法不足與解決思路4.1 存在的問題4.2 常見K值確定方法4.3 算法評估優化思路 1、聚類概述 聚類&#xff08;Clustering&#xff09;是指將不同…

淺談WPF之控件拖拽與拖動

使用過office的visio軟件畫圖的小伙伴都知道&#xff0c;畫圖軟件分為兩部分&#xff0c;左側圖形庫&#xff0c;存放各種圖標&#xff0c;右側是一個畫布&#xff0c;將左側圖形庫的圖標控件拖拽到右側畫布&#xff0c;就會生成一個新的控件&#xff0c;并且可以自由拖動。那如…