Java基礎篇_有關接口和抽象類的幾道練習題(分享)
呃,一定要理解之后自己敲?。?!這幾道題,使我進一步了解了接口和抽象類。
1.設計一個商品類 字段:
商品名稱,重量,價格,配件數(shù)量,配件制造廠商(是數(shù)組,因為可能有多個制造廠商)
要求: 有構造函數(shù)
重寫 toString 方法
重寫 equals方法,進行兩件商品的比較
package TT;
import java.util.Arrays;
public class G {
private int 重量;
private String 商品名稱;
private int 價格;
private int 配件數(shù)量;
private String[] 配件制造廠商列表;
public G(int 重量, String 商品名稱, int 價格, int 配件數(shù)量, String[] 配件制造廠商列表) {
super();
this.重量 = 重量;
this.商品名稱 = 商品名稱;
this.價格 = 價格;
this.配件數(shù)量 = 配件數(shù)量;
this.配件制造廠商列表 = 配件制造廠商列表;
}
@Override
public String toString() {
return "G [重量=" + 重量 + ", 商品名稱=" + 商品名稱 + ", 價格=" + 價格 + ", 配件數(shù)量="
+ 配件數(shù)量 + ", 配件制造廠商列表=" + Arrays.toString(配件制造廠商列表) + "]";
}
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj instanceof G) {
G goods = (G) obj;
if (this.重量 == goods.重量 && this.價格 == goods.價格
&& this.商品名稱.equals(goods.商品名稱) && this.配件數(shù)量 == goods.配件數(shù)量) {
for (int i = 0; i < this.配件制造廠商列表.length; i++) {
if (this.配件制造廠商列表[i] != goods.配件制造廠商列表[i]) {
return false;
}
}
return true;
} else {
return false;
}
} else {
return false;
}
}
//將測試類和上面的放一塊兒了
public static void main(String[] args) {
String[] 廠商列表1 = { "微軟", "索尼", "三星" };
String[] 廠商列表2 = { "微軟", "索尼", "三星" };
G g1 = new G(40, "電腦", 4000, 30, 廠商列表1);
G g2 = new G(40, "顯示器", 4000, 30, 廠商列表2);
System.out.println(g1);
System.out.println(g2);
System.out.println(g1.equals(g2));
}
}
2.設計一個抽象類,并演示它的使用 (三級)
package TT;
//抽象類
abstract class 數(shù)學老師標準{
abstract void 講數(shù)學();
abstract int add(int a,int b);
}
//第二級抽象類
abstract class 普通數(shù)學老師標準 extends 數(shù)學老師標準{
void 講數(shù)學(){
System.out.println("我能講數(shù)學");
}
}
//第三級抽象類
class 真正的數(shù)學老師 extends 普通數(shù)學老師標準{ //注意這里能不能用abstract修飾,修飾了以后會對上下的影響
//可以重寫,也可以不重寫
void 講數(shù)學(){
System.out.println("我能講高數(shù)");
}
int add(int a,int b){
return a+b;
}
}
class Test{
public static void main(String[] args) {
數(shù)學老師標準 t1=new 真正的數(shù)學老師();
int result=t1.add(44, 4444);
System.out.println("計算結果是:"+result);
t1.講數(shù)學();
}
}
3.設計一個接口, 并設計一個實現(xiàn)類,實現(xiàn)這個接口
package TT;
interface 銀行標準{
int MONEY=9900000;
void 取錢();
void 存錢();
}
class 工商銀行 implements 銀行標準{
public void 取錢(){
System.out.println("錢進銀行了");
}
@Override//全部方法都拿來
public void 存錢() {
System.out.println("錢出去了");
}
}
public class Test {
public static void main(String[]args){
銀行標準 bank=new 工商銀行();
bank.取錢();
bank.存錢();
System.out.println("銀行的老底是"+銀行標準.MONEY);//此處銀行標準用bank會報錯,The static field 銀行標準.MONEY should be accessed in a static way
}
}
4.設計一個類,可以同時實現(xiàn)多個接口
package TT;
interface 建筑標準 {
void kaimen();
void guanmen();
}
interface 銀行標準 {
int MONEY = 9999;
void 取錢();
void 存錢();
}
class 工商銀行 implements 銀行標準,建筑標準 {
@Override
public void kaimen() {
System.out.println("我能開門");
}
@Override
public void guanmen() {
// TODO Auto-generated method stub
System.out.println("我能關門");
}
@Override
public void 取錢() {
// TODO Auto-generated method stub
System.out.println("我能取錢");
}
@Override
public void 存錢() {
// TODO Auto-generated method stub
System.out.println("我能存錢");
}
}
public class Test2 {
public static void main(String[] args) {
工商銀行 bank = new 工商銀行();
bank.取錢();
bank.存錢();
System.out.println("銀行的底是" + 工商銀行.MONEY);
bank.kaimen();
bank.guanmen();
}
}
5.設計一個類,在繼承一個類的同時,實現(xiàn)其的兩個接口(具體是什么接口自行設計)
package TT;
interface 建筑標準{
void kaimen();
void guamen();
}
interface 銀行標準
{
int MONEY=900000; //接口中的變量,全相當于public static final 類型的
void 取錢();
void 存錢();
}
class 金融機構{
void 貨幣流通(){
System.out.println("貨幣流通");
}
}
class 工商銀行 extends 金融機構 implements 銀行標準, 建筑標準 {
public void 取錢() {
System.out.println("錢進了銀行");
}
public void 存錢() {
System.out.println("錢從銀行進行個人手里");
}
@Override
public void kaimen() {
System.out.println("銀行有個大門,能打開");
}
@Override
public void guamen() {
System.out.println("銀行有個鐵門,關了以后誰都進不來了");
}
}
class Test4{
public static void main(String[] args) {
工商銀行 bank=new 工商銀行();
bank.取錢() ;
bank.存錢() ;
System.out.println("銀行的底是"+bank.MONEY);
bank.kaimen();
bank.guamen();
bank.貨幣流通();
}
}
最后的彩蛋彩蛋彩蛋?。。?!

由于我在練習的時候將這幾個例題放在了同一個TT包下,一共有5個文件。最后的最后,上面的后三個例子開始報錯(比如報錯:The type 銀行標準 is already defined)。
啊啊啊啊,調試半個小時,都沒弄好。后來靜一下想,既然Eclipse提示XXX已經定義了,是不是只要在同一個包下,無論你建立多少個類,里面都不能重復定義相同類名文件呢?之后就開始Delete兩個),果然,成功啦。仔細一想,既然同一個包下,公共類之間可以訪問,這種排同性就是驗證啊,也可以省下很多資源。
以上這篇Java基礎篇_有關接口和抽象類的幾道練習題(分享)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
基于java Springboot實現(xiàn)教務管理系統(tǒng)詳解
這篇文章主要介紹了Java 實現(xiàn)簡易教務管理系統(tǒng)的代碼,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-08-08
Java?MapStruct優(yōu)雅地實現(xiàn)對象轉換
MapSturct?是一個生成類型安全,高性能且無依賴的?JavaBean?映射代碼的注解處理器,用它可以輕松實現(xiàn)對象轉換,下面就來和大家聊聊具體操作吧2023-06-06
JAVA數(shù)字千分位和小數(shù)點的現(xiàn)實代碼(處理金額問題)
這篇文章主要介紹了JAVA數(shù)字千分位和小數(shù)點的現(xiàn)實代碼(處理金額問題),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-10-10
java理論基礎Stream?reduce實現(xiàn)集合元素歸約
這篇文章主要為大家介紹了java理論基礎Stream?reduce實現(xiàn)集合元素歸約示例詳解有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步2022-03-03

