Java抽象類、繼承及多態(tài)和適配器的實現(xiàn)代碼
Java繼承
方法重寫是Java語言多態(tài)的特性,必須滿足以下條件
- 在子類中,方法名稱與父類方法名稱完全相同
- 方法的參數(shù)個數(shù)和類型完全相同,返回類型完全相同
- 方法的訪問修飾符訪問級別不低于父類同名方法的訪問級別
- 在方法上添加@override注釋,如果報錯說明不是重寫
方法重寫限制
- final修飾的父類方法在子類中不能被重寫
- static修飾的父類方法在子類中不能被重寫,只能覆蓋
super關(guān)鍵字
super關(guān)鍵字和this類似,super修飾的是父類的對象,如super();調(diào)用的是父類的默認(rèn)無參構(gòu)造器
Java抽象類
抽象類特點
- 抽象類通常應(yīng)包含抽象方法,也可以包含非抽象方法
- 抽象類不能使用final關(guān)鍵字修飾
- 抽象類自身不能夠?qū)嵗?/li>
- 抽象類就是用來被繼承的
抽象類的繼承
- 子類必須實現(xiàn)父類所有的抽象方法
- 如果子類已經(jīng)override實現(xiàn)父類的抽象方法,間接子類可以不用實現(xiàn)該方法。
適配器
- 定義一個適配器,類名+Adapator。比如MamalAdapator。繼承給父類所有的方法一個空的實現(xiàn)。后面實例的類繼承這個適配器,就可以選擇性的重寫實現(xiàn)部分父類的方法而不會報錯。
- 抽象類只提供一個抽象方法然后供子類去繼承和重寫override,然后特別是override的這個功能,可以做到比如Dog.eat,Cat.eat,不同的類,有不同的方法實現(xiàn),但是方法名稱都相同,給開發(fā)提供了極大的靈活性,后面的程序員接手開發(fā)的時候,比如需要再新增Tiger.eat,只需要再寫一個Tiger類繼承父類再override他的eat方法就可以了。
/**
* 1 使用Eclipse 工具建立一個普通Java控制臺應(yīng)用程序, 自定義一個類繼承Counter 類,
* 并根據(jù)理解定義在Counter類中定義的抽象方法對父類的抽象方法進行實現(xiàn),體會普通類繼承
* 抽象類必需做什么? 不同子類在繼承Counter抽象類并實現(xiàn)抽象方法時的算法和什么有關(guān).
*/
public class Test {
public static void main(String[] args) {
//用父類的類型去new一個子類
Counter cou = new Add();
//用父類的類型去調(diào)用子類的addition方法并實現(xiàn)
System.out.println("3+9的和是"+cou.addition(3,9));
}
}
/**
* 1 使用Eclipse 工具建立一個普通Java控制臺應(yīng)用程序,
* 自定義一個類繼承Counter 類,并根據(jù)理解定義在Counter
* 類中定義的抽象方法對父類的抽象方法進行實現(xiàn),體會普通類
* 繼承抽象類必需做什么? 不同子類在繼承Counter抽象類并
* 實現(xiàn)抽象方法時的算法和什么有關(guān).
*/
//定義一個抽象的父類Counter
public abstract class Counter {
//定義一個抽象方法addition
public abstract int addition(int num1, int num2);
public Counter(){
System.out.println("調(diào)用Counter父類構(gòu)造器");
}
}
/**
* 1 使用Eclipse 工具建立一個普通Java控制臺應(yīng)用程序,
* 自定義一個類繼承Counter 類,并根據(jù)理解定義在Counter類中
* 定義的抽象方法對父類的抽象方法進行實現(xiàn),體會普通類繼承抽象
* 類必需做什么? 不同子類在繼承Counter抽象類并實現(xiàn)抽象方法
* 時的算法和什么有關(guān).
*/
public class Add extends Counter{
int num1 = 0;
int num2 = 0;
//重寫父類中的加法并實現(xiàn)加法
@Override
public int addition(int num1, int num2) {
this.num1 = num1;
this.num2 = num2;
return num1+num2;
}
public Add(){
System.out.println("調(diào)用Add子類構(gòu)造器");
}
}
-----------------------------------------------分割線--------------------------------------------------------------
/**
*2 生活中很多東西都可以被人利用從而作為一種工具,這些工具都具備一個共同的功能那就是“用途”,
* 同時也有很多適合某個領(lǐng)域的工具(如,交通工具,建筑工具等 ),它們也在工具的范疇之內(nèi), 也有用
* 途功能,同時又具備自己的一些領(lǐng)域功能, 人們在使用這些工具時,可以根據(jù)實際情況選擇哪種具體
* 類別的工具實體.
* 根據(jù)以上描述,結(jié)合本單元知識點,設(shè)計工具抽象類定義用途的抽象方法,在此類的基礎(chǔ)上定義在此抽
* 象工具類范疇內(nèi)的至少2種特殊工具的抽象類并繼承上述的工具類 , 再根據(jù)實際使用工具的情況定
* 義更具體的工具類實現(xiàn)對2種特殊工具類其一的繼承, 分別實例化頂級工具類及特殊工具類對象,調(diào)
* 用其中功能方法, 理解領(lǐng)悟抽象類之間的繼承及實現(xiàn)多層繼承的普通類要注意哪些問題.
*
* 3 繼任務(wù)2實現(xiàn), 當(dāng)我們在使用繼承抽象父類的時候, 我們的本意只是為使用某個抽象類的特定方法,
* 但是受于普通類繼承抽象類的限制,必需實現(xiàn)所有父級抽象類中的所有方法,既使不用那些方法也必需
* 在子類中提供抽象方法的空實現(xiàn),如何解決這個問題呢, 請在任務(wù)2的基礎(chǔ)上編程實現(xiàn).
*/
package tool.test;
import tool.abstracts.Construct;
import tool.abstracts.Tool;
import tool.abstracts.Traffic;
import tool.imp.Car;
import tool.imp.Hammer;
public class Test {
public static void main(String[] args) {
//實例化頂級工具類對象,調(diào)用其中功能方法
Tool tool1 = new Traffic() {
@Override
public void constructTool() {
}
};
tool1.trafficTool();
Tool tool2 = new Construct() {
@Override
public void trafficTool() {
}
};
tool2.constructTool();
//實例化特殊工具類對象,調(diào)用其中功能方法
Traffic traffic = new Car();
traffic.trafficTool();
Construct construct = new Hammer();
construct.constructTool();
}
}
/**
*2 生活中很多東西都可以被人利用從而作為一種工具,這些工具都具備一個共同的功能那就是“用途”,
* 同時也有很多適合某個領(lǐng)域的工具(如,交通工具,建筑工具等 ),它們也在工具的范疇之內(nèi), 也有用
* 途功能,同時又具備自己的一些領(lǐng)域功能, 人們在使用這些工具時,可以根據(jù)實際情況選擇哪種具體
* 類別的工具實體.
* 根據(jù)以上描述,結(jié)合本單元知識點,設(shè)計工具抽象類定義用途的抽象方法,在此類的基礎(chǔ)上定義在此抽
* 象工具類范疇內(nèi)的至少2種特殊工具的抽象類并繼承上述的工具類 , 再根據(jù)實際使用工具的情況定
* 義更具體的工具類實現(xiàn)對2種特殊工具類其一的繼承, 分別實例化頂級工具類及特殊工具類對象,調(diào)
* 用其中功能方法, 理解領(lǐng)悟抽象類之間的繼承及實現(xiàn)多層繼承的普通類要注意哪些問題.
*
* 3 繼任務(wù)2實現(xiàn), 當(dāng)我們在使用繼承抽象父類的時候, 我們的本意只是為使用某個抽象類的特定方法,
* 但是受于普通類繼承抽象類的限制,必需實現(xiàn)所有父級抽象類中的所有方法,既使不用那些方法也必需
* 在子類中提供抽象方法的空實現(xiàn),如何解決這個問題呢, 請在任務(wù)2的基礎(chǔ)上編程實現(xiàn).
*/
package tool.abstracts;
//定義一個tool抽象類
public abstract class Tool {
//定義一個交通工具抽象方法
public abstract void trafficTool();
//定義一個建筑工具抽象方法
public abstract void constructTool();
}
/**
*2 生活中很多東西都可以被人利用從而作為一種工具,這些工具都具備一個共同的功能那就是“用途”,
* 同時也有很多適合某個領(lǐng)域的工具(如,交通工具,建筑工具等 ),它們也在工具的范疇之內(nèi), 也有用
* 途功能,同時又具備自己的一些領(lǐng)域功能, 人們在使用這些工具時,可以根據(jù)實際情況選擇哪種具體
* 類別的工具實體.
* 根據(jù)以上描述,結(jié)合本單元知識點,設(shè)計工具抽象類定義用途的抽象方法,在此類的基礎(chǔ)上定義在此抽
* 象工具類范疇內(nèi)的至少2種特殊工具的抽象類并繼承上述的工具類 , 再根據(jù)實際使用工具的情況定
* 義更具體的工具類實現(xiàn)對2種特殊工具類其一的繼承, 分別實例化頂級工具類及特殊工具類對象,調(diào)
* 用其中功能方法, 理解領(lǐng)悟抽象類之間的繼承及實現(xiàn)多層繼承的普通類要注意哪些問題.
*
* 3 繼任務(wù)2實現(xiàn), 當(dāng)我們在使用繼承抽象父類的時候, 我們的本意只是為使用某個抽象類的特定方法,
* 但是受于普通類繼承抽象類的限制,必需實現(xiàn)所有父級抽象類中的所有方法,既使不用那些方法也必需
* 在子類中提供抽象方法的空實現(xiàn),如何解決這個問題呢, 請在任務(wù)2的基礎(chǔ)上編程實現(xiàn).
*/
package tool.abstracts;
//定義一個交通工具抽象類繼承自工具類
public abstract class Traffic extends Tool {
public void trafficTool(){
System.out.println("我是所有交通工具的集合");
};
}
/**
*2 生活中很多東西都可以被人利用從而作為一種工具,這些工具都具備一個共同的功能那就是“用途”,
* 同時也有很多適合某個領(lǐng)域的工具(如,交通工具,建筑工具等 ),它們也在工具的范疇之內(nèi), 也有用
* 途功能,同時又具備自己的一些領(lǐng)域功能, 人們在使用這些工具時,可以根據(jù)實際情況選擇哪種具體
* 類別的工具實體.
* 根據(jù)以上描述,結(jié)合本單元知識點,設(shè)計工具抽象類定義用途的抽象方法,在此類的基礎(chǔ)上定義在此抽
* 象工具類范疇內(nèi)的至少2種特殊工具的抽象類并繼承上述的工具類 , 再根據(jù)實際使用工具的情況定
* 義更具體的工具類實現(xiàn)對2種特殊工具類其一的繼承, 分別實例化頂級工具類及特殊工具類對象,調(diào)
* 用其中功能方法, 理解領(lǐng)悟抽象類之間的繼承及實現(xiàn)多層繼承的普通類要注意哪些問題.
*
* 3 繼任務(wù)2實現(xiàn), 當(dāng)我們在使用繼承抽象父類的時候, 我們的本意只是為使用某個抽象類的特定方法,
* 但是受于普通類繼承抽象類的限制,必需實現(xiàn)所有父級抽象類中的所有方法,既使不用那些方法也必需
* 在子類中提供抽象方法的空實現(xiàn),如何解決這個問題呢, 請在任務(wù)2的基礎(chǔ)上編程實現(xiàn).
*/
package tool.abstracts;
//定義一個建筑工具抽象類繼承自工具類
public abstract class Construct extends Tool {
public void constructTool(){
System.out.println("我是所有建筑工具的集合");
};
}
/**
*2 生活中很多東西都可以被人利用從而作為一種工具,這些工具都具備一個共同的功能那就是“用途”,
* 同時也有很多適合某個領(lǐng)域的工具(如,交通工具,建筑工具等 ),它們也在工具的范疇之內(nèi), 也有用
* 途功能,同時又具備自己的一些領(lǐng)域功能, 人們在使用這些工具時,可以根據(jù)實際情況選擇哪種具體
* 類別的工具實體.
* 根據(jù)以上描述,結(jié)合本單元知識點,設(shè)計工具抽象類定義用途的抽象方法,在此類的基礎(chǔ)上定義在此抽
* 象工具類范疇內(nèi)的至少2種特殊工具的抽象類并繼承上述的工具類 , 再根據(jù)實際使用工具的情況定
* 義更具體的工具類實現(xiàn)對2種特殊工具類其一的繼承, 分別實例化頂級工具類及特殊工具類對象,調(diào)
* 用其中功能方法, 理解領(lǐng)悟抽象類之間的繼承及實現(xiàn)多層繼承的普通類要注意哪些問題.
*
* 3 繼任務(wù)2實現(xiàn), 當(dāng)我們在使用繼承抽象父類的時候, 我們的本意只是為使用某個抽象類的特定方法,
* 但是受于普通類繼承抽象類的限制,必需實現(xiàn)所有父級抽象類中的所有方法,既使不用那些方法也必需
* 在子類中提供抽象方法的空實現(xiàn),如何解決這個問題呢, 請在任務(wù)2的基礎(chǔ)上編程實現(xiàn).
*/
package tool.adaptor;
import tool.abstracts.Construct;
//定義一個Construct的適配器
public class ConstructAdaptor extends Construct {
//對交通工具方法進行一個重寫和空實現(xiàn)
@Override
public void trafficTool() {
}
//對建筑工具方法進行一個重寫和空實現(xiàn)
@Override
public void constructTool() {
}
}
/**
*2 生活中很多東西都可以被人利用從而作為一種工具,這些工具都具備一個共同的功能那就是“用途”,
* 同時也有很多適合某個領(lǐng)域的工具(如,交通工具,建筑工具等 ),它們也在工具的范疇之內(nèi), 也有用
* 途功能,同時又具備自己的一些領(lǐng)域功能, 人們在使用這些工具時,可以根據(jù)實際情況選擇哪種具體
* 類別的工具實體.
* 根據(jù)以上描述,結(jié)合本單元知識點,設(shè)計工具抽象類定義用途的抽象方法,在此類的基礎(chǔ)上定義在此抽
* 象工具類范疇內(nèi)的至少2種特殊工具的抽象類并繼承上述的工具類 , 再根據(jù)實際使用工具的情況定
* 義更具體的工具類實現(xiàn)對2種特殊工具類其一的繼承, 分別實例化頂級工具類及特殊工具類對象,調(diào)
* 用其中功能方法, 理解領(lǐng)悟抽象類之間的繼承及實現(xiàn)多層繼承的普通類要注意哪些問題.
*
* 3 繼任務(wù)2實現(xiàn), 當(dāng)我們在使用繼承抽象父類的時候, 我們的本意只是為使用某個抽象類的特定方法,
* 但是受于普通類繼承抽象類的限制,必需實現(xiàn)所有父級抽象類中的所有方法,既使不用那些方法也必需
* 在子類中提供抽象方法的空實現(xiàn),如何解決這個問題呢, 請在任務(wù)2的基礎(chǔ)上編程實現(xiàn).
*/
package tool.adaptor;
import tool.abstracts.Traffic;
//定義一個Traffic的適配器
public class TrafficAdaptor extends Traffic {
//對交通工具方法進行一個重寫和空實現(xiàn)
@Override
public void trafficTool() {
System.out.println("我是所有交通工具的集合");
}
//對建筑工具方法進行一個重寫和空實現(xiàn)
@Override
public void constructTool() {
}
}
/**
*2 生活中很多東西都可以被人利用從而作為一種工具,這些工具都具備一個共同的功能那就是“用途”,
* 同時也有很多適合某個領(lǐng)域的工具(如,交通工具,建筑工具等 ),它們也在工具的范疇之內(nèi), 也有用
* 途功能,同時又具備自己的一些領(lǐng)域功能, 人們在使用這些工具時,可以根據(jù)實際情況選擇哪種具體
* 類別的工具實體.
* 根據(jù)以上描述,結(jié)合本單元知識點,設(shè)計工具抽象類定義用途的抽象方法,在此類的基礎(chǔ)上定義在此抽
* 象工具類范疇內(nèi)的至少2種特殊工具的抽象類并繼承上述的工具類 , 再根據(jù)實際使用工具的情況定
* 義更具體的工具類實現(xiàn)對2種特殊工具類其一的繼承, 分別實例化頂級工具類及特殊工具類對象,調(diào)
* 用其中功能方法, 理解領(lǐng)悟抽象類之間的繼承及實現(xiàn)多層繼承的普通類要注意哪些問題.
*
* 3 繼任務(wù)2實現(xiàn), 當(dāng)我們在使用繼承抽象父類的時候, 我們的本意只是為使用某個抽象類的特定方法,
* 但是受于普通類繼承抽象類的限制,必需實現(xiàn)所有父級抽象類中的所有方法,既使不用那些方法也必需
* 在子類中提供抽象方法的空實現(xiàn),如何解決這個問題呢, 請在任務(wù)2的基礎(chǔ)上編程實現(xiàn).
*/
package tool.imp;
import tool.adaptor.TrafficAdaptor;
//定義一個普通類并具體實現(xiàn)交通工具方法
public class Car extends TrafficAdaptor {
@Override
public void trafficTool() {
System.out.println("我是交通工具汽車");
}
}
/**
*2 生活中很多東西都可以被人利用從而作為一種工具,這些工具都具備一個共同的功能那就是“用途”,
* 同時也有很多適合某個領(lǐng)域的工具(如,交通工具,建筑工具等 ),它們也在工具的范疇之內(nèi), 也有用
* 途功能,同時又具備自己的一些領(lǐng)域功能, 人們在使用這些工具時,可以根據(jù)實際情況選擇哪種具體
* 類別的工具實體.
* 根據(jù)以上描述,結(jié)合本單元知識點,設(shè)計工具抽象類定義用途的抽象方法,在此類的基礎(chǔ)上定義在此抽
* 象工具類范疇內(nèi)的至少2種特殊工具的抽象類并繼承上述的工具類 , 再根據(jù)實際使用工具的情況定
* 義更具體的工具類實現(xiàn)對2種特殊工具類其一的繼承, 分別實例化頂級工具類及特殊工具類對象,調(diào)
* 用其中功能方法, 理解領(lǐng)悟抽象類之間的繼承及實現(xiàn)多層繼承的普通類要注意哪些問題.
*
* 3 繼任務(wù)2實現(xiàn), 當(dāng)我們在使用繼承抽象父類的時候, 我們的本意只是為使用某個抽象類的特定方法,
* 但是受于普通類繼承抽象類的限制,必需實現(xiàn)所有父級抽象類中的所有方法,既使不用那些方法也必需
* 在子類中提供抽象方法的空實現(xiàn),如何解決這個問題呢, 請在任務(wù)2的基礎(chǔ)上編程實現(xiàn).
*/
package tool.imp;
import tool.adaptor.ConstructAdaptor;
//定義一個普通類并具體實現(xiàn)建筑工具方法
public class Hammer extends ConstructAdaptor {
@Override
public void constructTool(){
System.out.println("我是建筑工具錘子");
}
}
-----------------------------------分割線-----------------------------------
/**
* 4 在生活中,人們都會根據(jù)實際情況為完成某項任務(wù)而選擇利用不同的工具.
* 如我要旅行,會用到汽車或者飛機,我在打印文件時會用到打印機,我要學(xué)習(xí)
* java會用到筆記本電腦, 如何設(shè)計一個應(yīng)用程序定義一個人類并在人類中
* 定義一個使用工具的方法, 能夠讓在真正使用工具時, 用什么工具則這個
* 工具就能夠出現(xiàn)在使用工具的過程中,請根據(jù)java語言繼承及多態(tài)的特點
* 完成此編程任務(wù).
*/
package test;
import abstracts.Tool;
import imp.*;
//定義一個主類Test
public class Test {
public static void main(String[] args) {
//實例化Person類
Person per = new Person();
//通過多態(tài)的方式,以父類的類型實例化各個子類
Tool car = new Car();
Tool plane = new Plane();
Tool print = new Printer();
Tool laptop = new Laptop();
//調(diào)用對應(yīng)的子類去具體實現(xiàn)抽象方法
per.useTool(car);
per.useTool(plane);
per.useTool(print);
per.useTool(laptop);
}
}
/**
* 4 在生活中,人們都會根據(jù)實際情況為完成某項任務(wù)而選擇利用不同的工具.
* 如我要旅行,會用到汽車或者飛機,我在打印文件時會用到打印機,我要學(xué)習(xí)
* java會用到筆記本電腦, 如何設(shè)計一個應(yīng)用程序定義一個人類并在人類中
* 定義一個使用工具的方法, 能夠讓在真正使用工具時, 用什么工具則這個
* 工具就能夠出現(xiàn)在使用工具的過程中,請根據(jù)java語言繼承及多態(tài)的特點
* 完成此編程任務(wù).
*/
package abstracts;
//定義一個抽象的工具類作為父類
public abstract class Tool {
//定義一個旅行的抽象方法
public abstract void travel();
//定義一個打印的抽象方法
public abstract void print();
//定義一個學(xué)習(xí)的抽象方法
public abstract void study();
}
/**
* 4 在生活中,人們都會根據(jù)實際情況為完成某項任務(wù)而選擇利用不同的工具.
* 如我要旅行,會用到汽車或者飛機,我在打印文件時會用到打印機,我要學(xué)習(xí)
* java會用到筆記本電腦, 如何設(shè)計一個應(yīng)用程序定義一個人類并在人類中
* 定義一個使用工具的方法, 能夠讓在真正使用工具時, 用什么工具則這個
* 工具就能夠出現(xiàn)在使用工具的過程中,請根據(jù)java語言繼承及多態(tài)的特點
* 完成此編程任務(wù).
*/
package adaptor;
import abstracts.Tool;
//定義一個適配器,繼承工具類并提供3個方法的空實現(xiàn)
public class ToolAdaptor extends Tool {
@Override
public void travel() {
}
@Override
public void print() {
}
@Override
public void study() {
}
}
/**
* 4 在生活中,人們都會根據(jù)實際情況為完成某項任務(wù)而選擇利用不同的工具.
* 如我要旅行,會用到汽車或者飛機,我在打印文件時會用到打印機,我要學(xué)習(xí)
* java會用到筆記本電腦, 如何設(shè)計一個應(yīng)用程序定義一個人類并在人類中
* 定義一個使用工具的方法, 能夠讓在真正使用工具時, 用什么工具則這個
* 工具就能夠出現(xiàn)在使用工具的過程中,請根據(jù)java語言繼承及多態(tài)的特點
* 完成此編程任務(wù).
*/
package imp;
import adaptor.ToolAdaptor;
//定義一個汽車類繼承父類的適配器,重寫并具體實現(xiàn)旅行的這個抽象方法
public class Car extends ToolAdaptor {
@Override
public void travel() {
System.out.println("使用汽車旅行");
}
}
/**
* 4 在生活中,人們都會根據(jù)實際情況為完成某項任務(wù)而選擇利用不同的工具.
* 如我要旅行,會用到汽車或者飛機,我在打印文件時會用到打印機,我要學(xué)習(xí)
* java會用到筆記本電腦, 如何設(shè)計一個應(yīng)用程序定義一個人類并在人類中
* 定義一個使用工具的方法, 能夠讓在真正使用工具時, 用什么工具則這個
* 工具就能夠出現(xiàn)在使用工具的過程中,請根據(jù)java語言繼承及多態(tài)的特點
* 完成此編程任務(wù).
*/
package imp;
import adaptor.ToolAdaptor;
//定義一個飛機類繼承父類的適配器,重寫并具體實現(xiàn)旅行的這個抽象方法
public class Plane extends ToolAdaptor {
@Override
public void travel(){
System.out.println("使用飛機旅行");
}
}
/**
* 4 在生活中,人們都會根據(jù)實際情況為完成某項任務(wù)而選擇利用不同的工具.
* 如我要旅行,會用到汽車或者飛機,我在打印文件時會用到打印機,我要學(xué)習(xí)
* java會用到筆記本電腦, 如何設(shè)計一個應(yīng)用程序定義一個人類并在人類中
* 定義一個使用工具的方法, 能夠讓在真正使用工具時, 用什么工具則這個
* 工具就能夠出現(xiàn)在使用工具的過程中,請根據(jù)java語言繼承及多態(tài)的特點
* 完成此編程任務(wù).
*/
package imp;
import adaptor.ToolAdaptor;
//定義一個筆記本電腦類繼承父類的適配器,重寫并具體實現(xiàn)學(xué)習(xí)的這個抽象方法
public class Laptop extends ToolAdaptor {
@Override
public void study(){
System.out.println("使用筆記本電腦學(xué)習(xí)Java");
}
}
/**
* 4 在生活中,人們都會根據(jù)實際情況為完成某項任務(wù)而選擇利用不同的工具.
* 如我要旅行,會用到汽車或者飛機,我在打印文件時會用到打印機,我要學(xué)習(xí)
* java會用到筆記本電腦, 如何設(shè)計一個應(yīng)用程序定義一個人類并在人類中
* 定義一個使用工具的方法, 能夠讓在真正使用工具時, 用什么工具則這個
* 工具就能夠出現(xiàn)在使用工具的過程中,請根據(jù)java語言繼承及多態(tài)的特點
* 完成此編程任務(wù).
*/
package imp;
import adaptor.ToolAdaptor;
//定義一個打印機類繼承父類的適配器,重寫并具體實現(xiàn)打印的這個抽象方法
public class Printer extends ToolAdaptor {
@Override
public void print() {
System.out.println("使用打印機打印文件");
}
}
/**
* 4 在生活中,人們都會根據(jù)實際情況為完成某項任務(wù)而選擇利用不同的工具.
* 如我要旅行,會用到汽車或者飛機,我在打印文件時會用到打印機,我要學(xué)習(xí)
* java會用到筆記本電腦, 如何設(shè)計一個應(yīng)用程序定義一個人類并在人類中
* 定義一個使用工具的方法, 能夠讓在真正使用工具時, 用什么工具則這個
* 工具就能夠出現(xiàn)在使用工具的過程中,請根據(jù)java語言繼承及多態(tài)的特點
* 完成此編程任務(wù).
*/
package imp;
import abstracts.Tool;
//定義一個Person類
public class Person {
//定義一個使用工具的方法,接收tool抽象類的類型,并調(diào)用tool抽象類的三個抽象方法
public void useTool(Tool tool){
tool.travel();
tool.print();
tool.study();
}
}
以上就是Java抽象類、繼承及多態(tài)和適配器的實現(xiàn)的詳細(xì)內(nèi)容,更多關(guān)于java抽象類繼承多態(tài)的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
SpringBoot整合SpringSecurity實現(xiàn)JWT認(rèn)證的項目實踐
本文會通過創(chuàng)建SpringBoot項目整合SpringSecurity,實現(xiàn)完整的JWT認(rèn)證機制,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07
使用JDBC4.0操作XML類型的字段(保存獲取xml數(shù)據(jù))的方法
jdbc4.0最重要的特征是支持xml數(shù)據(jù)類型,接下來通過本文重點給大家介紹如何使用jdbc4.0操作xml類型的字段,對jdbc4.0 xml相關(guān)知識感興趣的朋友一起看下吧2016-08-08
一文詳解SpringBoot中CommandLineRunner接口
Spring Boot的CommandLineRunner接口是一個函數(shù)式接口,用于在Spring Boot應(yīng)用程序啟動后執(zhí)行一些初始化操作,它提供了一個run方法,該方法在應(yīng)用程序啟動后被調(diào)用,本文給大家詳細(xì)介紹了SpringBoot中CommandLineRunner接口,需要的朋友可以參考下2023-10-10
Spring Bean生命周期之BeanDefinition的合并過程詳解
這篇文章主要為大家詳細(xì)介紹了Spring Bean生命周期之BeanDefinition的合并過程,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-03-03
springboot+mybatis+枚舉處理器的實現(xiàn)
在Spring?boot項目開發(fā)中經(jīng)常遇到需要使用枚舉的場景,本文就介紹了springboot+mybatis+枚舉處理器的實現(xiàn),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-03-03
詳解SpringSecurity中的Authentication信息與登錄流程
這篇文章主要介紹了SpringSecurity中的Authentication信息與登錄流程,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-09-09
Mybatis?Plus使用XML編寫動態(tài)sql的超簡易方法
這篇文章主要介紹了Mybatis?Plus使用XML編寫動態(tài)sql的超簡易方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-01-01

