下面小編就為大家帶來一篇Java基礎篇_有關介面和抽象類別的幾道練習題(分享)。小編覺得蠻不錯的,現在就分享給大家,也給大家做個參考。一起跟著小編過來看看吧
呃,一定要理解之後自己敲! ! !這幾題,使我進一步了解了介面和抽象類別。
1.設計一個商品類別欄位:
商品名稱,重量,價格,配件數量,配件製造廠商(是陣列,因為可能有多個製造廠商)
##要求: 有重寫equals方法,進行兩件商品的比較
package TT; import java.util.Arrays; public class G { private int 重量; private String 商品名称; private int 价格; private int 配件数量; private String[] 配件制造厂商列表; public G(int 重量, String 商品名称, int 价格, int 配件数量, String[] 配件制造厂商列表) { super(); this.重量 = 重量; this.商品名称 = 商品名称; this.价格 = 价格; this.配件数量 = 配件数量; this.配件制造厂商列表 = 配件制造厂商列表; } @Override public String toString() { return "G [重量=" + 重量 + ", 商品名称=" + 商品名称 + ", 价格=" + 价格 + ", 配件数量=" + 配件数量 + ", 配件制造厂商列表=" + 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.配件数量 == goods.配件数量) { 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 数学老师标准{
abstract void 讲数学();
abstract int add(int a,int b);
}
//第二级抽象类
abstract class 普通数学老师标准 extends 数学老师标准{
void 讲数学(){
System.out.println("我能讲数学");
}
}
//第三级抽象类
class 真正的数学老师 extends 普通数学老师标准{ //注意这里能不能用abstract修饰,修饰了以后会对上下的影响
//可以重写,也可以不重写
void 讲数学(){
System.out.println("我能讲高数");
}
int add(int a,int b){
return a+b;
}
}
class Test{
public static void main(String[] args) {
数学老师标准 t1=new 真正的数学老师();
int result=t1.add(44, 4444);
System.out.println("计算结果是:"+result);
t1.讲数学();
}
}
3.設計一個介面, 並設計一個實作類別,實作這個介面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.設計一個類別,可以同時實作多個介面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.設計一個類別,在繼承一個類別的同時,實現其的兩個介面(具體是什麼接口自行設計) 由於我在練習的時候將這幾個例題放在了同一個TT包下,一共有5個檔案。最後的最後,上面的後三個例子開始報錯(例如報錯:The type 銀行標準 is already defined)。 啊啊啊啊,調試半小時,都沒弄好。後來靜一下想,既然 提示XXX已經定義了,是不是只要在同一個包下,無論你建立多少個類,裡面都不能重複定義相同類名文件呢?之後就開始Delete兩個),果然,成功啦。仔細一想,既然同一個包下,公共類之間可以訪問,這種排同性就是驗證啊,也可以省下很多資源。 以上是Java有關介面和抽象類別的練習題的詳細內容。更多資訊請關注PHP中文網其他相關文章!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.货币流通();
}
}