最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java抽象類、繼承及多態(tài)和適配器的實(shí)現(xiàn)代碼

 更新時(shí)間:2021年06月16日 09:36:55   作者:伊萬  
這篇文章主要介紹了Java抽象類、繼承及多態(tài)和適配器的實(shí)現(xiàn),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

Java繼承

方法重寫是Java語言多態(tài)的特性,必須滿足以下條件

  • 在子類中,方法名稱與父類方法名稱完全相同
  • 方法的參數(shù)個(gè)數(shù)和類型完全相同,返回類型完全相同
  • 方法的訪問修飾符訪問級(jí)別不低于父類同名方法的訪問級(jí)別
  • 在方法上添加@override注釋,如果報(bào)錯(cuò)說明不是重寫

方法重寫限制

  • final修飾的父類方法在子類中不能被重寫
  • static修飾的父類方法在子類中不能被重寫,只能覆蓋

super關(guān)鍵字

super關(guān)鍵字和this類似,super修飾的是父類的對(duì)象,如super();調(diào)用的是父類的默認(rèn)無參構(gòu)造器

Java抽象類

抽象類特點(diǎn)

  1. 抽象類通常應(yīng)包含抽象方法,也可以包含非抽象方法
  2. 抽象類不能使用final關(guān)鍵字修飾
  3. 抽象類自身不能夠?qū)嵗?/li>
  4. 抽象類就是用來被繼承的

抽象類的繼承

  • 子類必須實(shí)現(xiàn)父類所有的抽象方法
  • 如果子類已經(jīng)override實(shí)現(xiàn)父類的抽象方法,間接子類可以不用實(shí)現(xiàn)該方法。

適配器

  • 定義一個(gè)適配器,類名+Adapator。比如MamalAdapator。繼承給父類所有的方法一個(gè)空的實(shí)現(xiàn)。后面實(shí)例的類繼承這個(gè)適配器,就可以選擇性的重寫實(shí)現(xiàn)部分父類的方法而不會(huì)報(bào)錯(cuò)。
  • 抽象類只提供一個(gè)抽象方法然后供子類去繼承和重寫override,然后特別是override的這個(gè)功能,可以做到比如Dog.eat,Cat.eat,不同的類,有不同的方法實(shí)現(xiàn),但是方法名稱都相同,給開發(fā)提供了極大的靈活性,后面的程序員接手開發(fā)的時(shí)候,比如需要再新增Tiger.eat,只需要再寫一個(gè)Tiger類繼承父類再override他的eat方法就可以了。
/**
 * 1 使用Eclipse 工具建立一個(gè)普通Java控制臺(tái)應(yīng)用程序, 自定義一個(gè)類繼承Counter 類,
 * 并根據(jù)理解定義在Counter類中定義的抽象方法對(duì)父類的抽象方法進(jìn)行實(shí)現(xiàn),體會(huì)普通類繼承
 * 抽象類必需做什么? 不同子類在繼承Counter抽象類并實(shí)現(xiàn)抽象方法時(shí)的算法和什么有關(guān).
 */

public class Test {
    public static void main(String[] args) {
        //用父類的類型去new一個(gè)子類
        Counter cou = new Add();
        //用父類的類型去調(diào)用子類的addition方法并實(shí)現(xiàn)
        System.out.println("3+9的和是"+cou.addition(3,9));
    }
}
/**
 * 1 使用Eclipse 工具建立一個(gè)普通Java控制臺(tái)應(yīng)用程序,
 * 自定義一個(gè)類繼承Counter 類,并根據(jù)理解定義在Counter
 * 類中定義的抽象方法對(duì)父類的抽象方法進(jìn)行實(shí)現(xiàn),體會(huì)普通類
 * 繼承抽象類必需做什么? 不同子類在繼承Counter抽象類并
 * 實(shí)現(xiàn)抽象方法時(shí)的算法和什么有關(guān).
 */

//定義一個(gè)抽象的父類Counter
public abstract class Counter {
    //定義一個(gè)抽象方法addition
    public abstract int addition(int num1, int num2);

    public Counter(){
        System.out.println("調(diào)用Counter父類構(gòu)造器");
    }
}
/**
 * 1 使用Eclipse 工具建立一個(gè)普通Java控制臺(tái)應(yīng)用程序,
 * 自定義一個(gè)類繼承Counter 類,并根據(jù)理解定義在Counter類中
 * 定義的抽象方法對(duì)父類的抽象方法進(jìn)行實(shí)現(xiàn),體會(huì)普通類繼承抽象
 * 類必需做什么? 不同子類在繼承Counter抽象類并實(shí)現(xiàn)抽象方法
 * 時(shí)的算法和什么有關(guān).
 */

public class Add extends Counter{

    int num1 = 0;
    int num2 = 0;

    //重寫父類中的加法并實(shí)現(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 生活中很多東西都可以被人利用從而作為一種工具,這些工具都具備一個(gè)共同的功能那就是“用途”,
 * 同時(shí)也有很多適合某個(gè)領(lǐng)域的工具(如,交通工具,建筑工具等 ),它們也在工具的范疇之內(nèi), 也有用
 * 途功能,同時(shí)又具備自己的一些領(lǐng)域功能, 人們在使用這些工具時(shí),可以根據(jù)實(shí)際情況選擇哪種具體
 * 類別的工具實(shí)體.
 * 根據(jù)以上描述,結(jié)合本單元知識(shí)點(diǎn),設(shè)計(jì)工具抽象類定義用途的抽象方法,在此類的基礎(chǔ)上定義在此抽
 * 象工具類范疇內(nèi)的至少2種特殊工具的抽象類并繼承上述的工具類 , 再根據(jù)實(shí)際使用工具的情況定
 * 義更具體的工具類實(shí)現(xiàn)對(duì)2種特殊工具類其一的繼承, 分別實(shí)例化頂級(jí)工具類及特殊工具類對(duì)象,調(diào)
 * 用其中功能方法, 理解領(lǐng)悟抽象類之間的繼承及實(shí)現(xiàn)多層繼承的普通類要注意哪些問題.
 *
 * 3 繼任務(wù)2實(shí)現(xiàn), 當(dāng)我們在使用繼承抽象父類的時(shí)候, 我們的本意只是為使用某個(gè)抽象類的特定方法,
 * 但是受于普通類繼承抽象類的限制,必需實(shí)現(xiàn)所有父級(jí)抽象類中的所有方法,既使不用那些方法也必需
 * 在子類中提供抽象方法的空實(shí)現(xiàn),如何解決這個(gè)問題呢, 請?jiān)谌蝿?wù)2的基礎(chǔ)上編程實(shí)現(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) {
        //實(shí)例化頂級(jí)工具類對(duì)象,調(diào)用其中功能方法
        Tool tool1 = new Traffic() {
            @Override
            public void constructTool() {

            }
        };
        tool1.trafficTool();

        Tool tool2 = new Construct() {
            @Override
            public void trafficTool() {

            }
        };
        tool2.constructTool();

        //實(shí)例化特殊工具類對(duì)象,調(diào)用其中功能方法
        Traffic traffic = new Car();
        traffic.trafficTool();

        Construct construct = new Hammer();
        construct.constructTool();


    }
}
/**
 *2 生活中很多東西都可以被人利用從而作為一種工具,這些工具都具備一個(gè)共同的功能那就是“用途”,
 * 同時(shí)也有很多適合某個(gè)領(lǐng)域的工具(如,交通工具,建筑工具等 ),它們也在工具的范疇之內(nèi), 也有用
 * 途功能,同時(shí)又具備自己的一些領(lǐng)域功能, 人們在使用這些工具時(shí),可以根據(jù)實(shí)際情況選擇哪種具體
 * 類別的工具實(shí)體.
 * 根據(jù)以上描述,結(jié)合本單元知識(shí)點(diǎn),設(shè)計(jì)工具抽象類定義用途的抽象方法,在此類的基礎(chǔ)上定義在此抽
 * 象工具類范疇內(nèi)的至少2種特殊工具的抽象類并繼承上述的工具類 , 再根據(jù)實(shí)際使用工具的情況定
 * 義更具體的工具類實(shí)現(xiàn)對(duì)2種特殊工具類其一的繼承, 分別實(shí)例化頂級(jí)工具類及特殊工具類對(duì)象,調(diào)
 * 用其中功能方法, 理解領(lǐng)悟抽象類之間的繼承及實(shí)現(xiàn)多層繼承的普通類要注意哪些問題.
 *
 * 3 繼任務(wù)2實(shí)現(xiàn), 當(dāng)我們在使用繼承抽象父類的時(shí)候, 我們的本意只是為使用某個(gè)抽象類的特定方法,
 * 但是受于普通類繼承抽象類的限制,必需實(shí)現(xiàn)所有父級(jí)抽象類中的所有方法,既使不用那些方法也必需
 * 在子類中提供抽象方法的空實(shí)現(xiàn),如何解決這個(gè)問題呢, 請?jiān)谌蝿?wù)2的基礎(chǔ)上編程實(shí)現(xiàn).
 */

package tool.abstracts;

//定義一個(gè)tool抽象類
public abstract class Tool {
    //定義一個(gè)交通工具抽象方法
    public abstract void trafficTool();
    //定義一個(gè)建筑工具抽象方法
    public abstract void constructTool();
}
/**
 *2 生活中很多東西都可以被人利用從而作為一種工具,這些工具都具備一個(gè)共同的功能那就是“用途”,
 * 同時(shí)也有很多適合某個(gè)領(lǐng)域的工具(如,交通工具,建筑工具等 ),它們也在工具的范疇之內(nèi), 也有用
 * 途功能,同時(shí)又具備自己的一些領(lǐng)域功能, 人們在使用這些工具時(shí),可以根據(jù)實(shí)際情況選擇哪種具體
 * 類別的工具實(shí)體.
 * 根據(jù)以上描述,結(jié)合本單元知識(shí)點(diǎn),設(shè)計(jì)工具抽象類定義用途的抽象方法,在此類的基礎(chǔ)上定義在此抽
 * 象工具類范疇內(nèi)的至少2種特殊工具的抽象類并繼承上述的工具類 , 再根據(jù)實(shí)際使用工具的情況定
 * 義更具體的工具類實(shí)現(xiàn)對(duì)2種特殊工具類其一的繼承, 分別實(shí)例化頂級(jí)工具類及特殊工具類對(duì)象,調(diào)
 * 用其中功能方法, 理解領(lǐng)悟抽象類之間的繼承及實(shí)現(xiàn)多層繼承的普通類要注意哪些問題.
 *
 * 3 繼任務(wù)2實(shí)現(xiàn), 當(dāng)我們在使用繼承抽象父類的時(shí)候, 我們的本意只是為使用某個(gè)抽象類的特定方法,
 * 但是受于普通類繼承抽象類的限制,必需實(shí)現(xiàn)所有父級(jí)抽象類中的所有方法,既使不用那些方法也必需
 * 在子類中提供抽象方法的空實(shí)現(xiàn),如何解決這個(gè)問題呢, 請?jiān)谌蝿?wù)2的基礎(chǔ)上編程實(shí)現(xiàn).
 */

package tool.abstracts;

//定義一個(gè)交通工具抽象類繼承自工具類
public abstract class Traffic extends Tool {

    public void trafficTool(){
        System.out.println("我是所有交通工具的集合");
    };
}
/**
 *2 生活中很多東西都可以被人利用從而作為一種工具,這些工具都具備一個(gè)共同的功能那就是“用途”,
 * 同時(shí)也有很多適合某個(gè)領(lǐng)域的工具(如,交通工具,建筑工具等 ),它們也在工具的范疇之內(nèi), 也有用
 * 途功能,同時(shí)又具備自己的一些領(lǐng)域功能, 人們在使用這些工具時(shí),可以根據(jù)實(shí)際情況選擇哪種具體
 * 類別的工具實(shí)體.
 * 根據(jù)以上描述,結(jié)合本單元知識(shí)點(diǎn),設(shè)計(jì)工具抽象類定義用途的抽象方法,在此類的基礎(chǔ)上定義在此抽
 * 象工具類范疇內(nèi)的至少2種特殊工具的抽象類并繼承上述的工具類 , 再根據(jù)實(shí)際使用工具的情況定
 * 義更具體的工具類實(shí)現(xiàn)對(duì)2種特殊工具類其一的繼承, 分別實(shí)例化頂級(jí)工具類及特殊工具類對(duì)象,調(diào)
 * 用其中功能方法, 理解領(lǐng)悟抽象類之間的繼承及實(shí)現(xiàn)多層繼承的普通類要注意哪些問題.
 *
 * 3 繼任務(wù)2實(shí)現(xiàn), 當(dāng)我們在使用繼承抽象父類的時(shí)候, 我們的本意只是為使用某個(gè)抽象類的特定方法,
 * 但是受于普通類繼承抽象類的限制,必需實(shí)現(xiàn)所有父級(jí)抽象類中的所有方法,既使不用那些方法也必需
 * 在子類中提供抽象方法的空實(shí)現(xiàn),如何解決這個(gè)問題呢, 請?jiān)谌蝿?wù)2的基礎(chǔ)上編程實(shí)現(xiàn).
 */

package tool.abstracts;

//定義一個(gè)建筑工具抽象類繼承自工具類
public abstract class Construct extends Tool {

    public void constructTool(){
        System.out.println("我是所有建筑工具的集合");
    };
}
/**
 *2 生活中很多東西都可以被人利用從而作為一種工具,這些工具都具備一個(gè)共同的功能那就是“用途”,
 * 同時(shí)也有很多適合某個(gè)領(lǐng)域的工具(如,交通工具,建筑工具等 ),它們也在工具的范疇之內(nèi), 也有用
 * 途功能,同時(shí)又具備自己的一些領(lǐng)域功能, 人們在使用這些工具時(shí),可以根據(jù)實(shí)際情況選擇哪種具體
 * 類別的工具實(shí)體.
 * 根據(jù)以上描述,結(jié)合本單元知識(shí)點(diǎn),設(shè)計(jì)工具抽象類定義用途的抽象方法,在此類的基礎(chǔ)上定義在此抽
 * 象工具類范疇內(nèi)的至少2種特殊工具的抽象類并繼承上述的工具類 , 再根據(jù)實(shí)際使用工具的情況定
 * 義更具體的工具類實(shí)現(xiàn)對(duì)2種特殊工具類其一的繼承, 分別實(shí)例化頂級(jí)工具類及特殊工具類對(duì)象,調(diào)
 * 用其中功能方法, 理解領(lǐng)悟抽象類之間的繼承及實(shí)現(xiàn)多層繼承的普通類要注意哪些問題.
 *
 * 3 繼任務(wù)2實(shí)現(xiàn), 當(dāng)我們在使用繼承抽象父類的時(shí)候, 我們的本意只是為使用某個(gè)抽象類的特定方法,
 * 但是受于普通類繼承抽象類的限制,必需實(shí)現(xiàn)所有父級(jí)抽象類中的所有方法,既使不用那些方法也必需
 * 在子類中提供抽象方法的空實(shí)現(xiàn),如何解決這個(gè)問題呢, 請?jiān)谌蝿?wù)2的基礎(chǔ)上編程實(shí)現(xiàn).
 */

package tool.adaptor;

import tool.abstracts.Construct;

//定義一個(gè)Construct的適配器
public class ConstructAdaptor extends Construct {

    //對(duì)交通工具方法進(jìn)行一個(gè)重寫和空實(shí)現(xiàn)
    @Override
    public void trafficTool() {

    }
    //對(duì)建筑工具方法進(jìn)行一個(gè)重寫和空實(shí)現(xiàn)
    @Override
    public void constructTool() {

    }
}
/**
 *2 生活中很多東西都可以被人利用從而作為一種工具,這些工具都具備一個(gè)共同的功能那就是“用途”,
 * 同時(shí)也有很多適合某個(gè)領(lǐng)域的工具(如,交通工具,建筑工具等 ),它們也在工具的范疇之內(nèi), 也有用
 * 途功能,同時(shí)又具備自己的一些領(lǐng)域功能, 人們在使用這些工具時(shí),可以根據(jù)實(shí)際情況選擇哪種具體
 * 類別的工具實(shí)體.
 * 根據(jù)以上描述,結(jié)合本單元知識(shí)點(diǎn),設(shè)計(jì)工具抽象類定義用途的抽象方法,在此類的基礎(chǔ)上定義在此抽
 * 象工具類范疇內(nèi)的至少2種特殊工具的抽象類并繼承上述的工具類 , 再根據(jù)實(shí)際使用工具的情況定
 * 義更具體的工具類實(shí)現(xiàn)對(duì)2種特殊工具類其一的繼承, 分別實(shí)例化頂級(jí)工具類及特殊工具類對(duì)象,調(diào)
 * 用其中功能方法, 理解領(lǐng)悟抽象類之間的繼承及實(shí)現(xiàn)多層繼承的普通類要注意哪些問題.
 *
 * 3 繼任務(wù)2實(shí)現(xiàn), 當(dāng)我們在使用繼承抽象父類的時(shí)候, 我們的本意只是為使用某個(gè)抽象類的特定方法,
 * 但是受于普通類繼承抽象類的限制,必需實(shí)現(xiàn)所有父級(jí)抽象類中的所有方法,既使不用那些方法也必需
 * 在子類中提供抽象方法的空實(shí)現(xiàn),如何解決這個(gè)問題呢, 請?jiān)谌蝿?wù)2的基礎(chǔ)上編程實(shí)現(xiàn).
 */

package tool.adaptor;

import tool.abstracts.Traffic;

//定義一個(gè)Traffic的適配器
public class TrafficAdaptor extends Traffic {

    //對(duì)交通工具方法進(jìn)行一個(gè)重寫和空實(shí)現(xiàn)
    @Override
    public void trafficTool() {
        System.out.println("我是所有交通工具的集合");
    }
    //對(duì)建筑工具方法進(jìn)行一個(gè)重寫和空實(shí)現(xiàn)
    @Override
    public void constructTool() {

    }
}
/**
 *2 生活中很多東西都可以被人利用從而作為一種工具,這些工具都具備一個(gè)共同的功能那就是“用途”,
 * 同時(shí)也有很多適合某個(gè)領(lǐng)域的工具(如,交通工具,建筑工具等 ),它們也在工具的范疇之內(nèi), 也有用
 * 途功能,同時(shí)又具備自己的一些領(lǐng)域功能, 人們在使用這些工具時(shí),可以根據(jù)實(shí)際情況選擇哪種具體
 * 類別的工具實(shí)體.
 * 根據(jù)以上描述,結(jié)合本單元知識(shí)點(diǎn),設(shè)計(jì)工具抽象類定義用途的抽象方法,在此類的基礎(chǔ)上定義在此抽
 * 象工具類范疇內(nèi)的至少2種特殊工具的抽象類并繼承上述的工具類 , 再根據(jù)實(shí)際使用工具的情況定
 * 義更具體的工具類實(shí)現(xiàn)對(duì)2種特殊工具類其一的繼承, 分別實(shí)例化頂級(jí)工具類及特殊工具類對(duì)象,調(diào)
 * 用其中功能方法, 理解領(lǐng)悟抽象類之間的繼承及實(shí)現(xiàn)多層繼承的普通類要注意哪些問題.
 *
 * 3 繼任務(wù)2實(shí)現(xiàn), 當(dāng)我們在使用繼承抽象父類的時(shí)候, 我們的本意只是為使用某個(gè)抽象類的特定方法,
 * 但是受于普通類繼承抽象類的限制,必需實(shí)現(xiàn)所有父級(jí)抽象類中的所有方法,既使不用那些方法也必需
 * 在子類中提供抽象方法的空實(shí)現(xiàn),如何解決這個(gè)問題呢, 請?jiān)谌蝿?wù)2的基礎(chǔ)上編程實(shí)現(xiàn).
 */

package tool.imp;

import tool.adaptor.TrafficAdaptor;

//定義一個(gè)普通類并具體實(shí)現(xiàn)交通工具方法
public class Car extends TrafficAdaptor {
    @Override
    public void trafficTool() {
        System.out.println("我是交通工具汽車");
    }
}
/**
 *2 生活中很多東西都可以被人利用從而作為一種工具,這些工具都具備一個(gè)共同的功能那就是“用途”,
 * 同時(shí)也有很多適合某個(gè)領(lǐng)域的工具(如,交通工具,建筑工具等 ),它們也在工具的范疇之內(nèi), 也有用
 * 途功能,同時(shí)又具備自己的一些領(lǐng)域功能, 人們在使用這些工具時(shí),可以根據(jù)實(shí)際情況選擇哪種具體
 * 類別的工具實(shí)體.
 * 根據(jù)以上描述,結(jié)合本單元知識(shí)點(diǎn),設(shè)計(jì)工具抽象類定義用途的抽象方法,在此類的基礎(chǔ)上定義在此抽
 * 象工具類范疇內(nèi)的至少2種特殊工具的抽象類并繼承上述的工具類 , 再根據(jù)實(shí)際使用工具的情況定
 * 義更具體的工具類實(shí)現(xiàn)對(duì)2種特殊工具類其一的繼承, 分別實(shí)例化頂級(jí)工具類及特殊工具類對(duì)象,調(diào)
 * 用其中功能方法, 理解領(lǐng)悟抽象類之間的繼承及實(shí)現(xiàn)多層繼承的普通類要注意哪些問題.
 *
 * 3 繼任務(wù)2實(shí)現(xiàn), 當(dāng)我們在使用繼承抽象父類的時(shí)候, 我們的本意只是為使用某個(gè)抽象類的特定方法,
 * 但是受于普通類繼承抽象類的限制,必需實(shí)現(xiàn)所有父級(jí)抽象類中的所有方法,既使不用那些方法也必需
 * 在子類中提供抽象方法的空實(shí)現(xiàn),如何解決這個(gè)問題呢, 請?jiān)谌蝿?wù)2的基礎(chǔ)上編程實(shí)現(xiàn).
 */

package tool.imp;

import tool.adaptor.ConstructAdaptor;

//定義一個(gè)普通類并具體實(shí)現(xiàn)建筑工具方法
public class Hammer extends ConstructAdaptor {
    @Override
    public void constructTool(){
        System.out.println("我是建筑工具錘子");
    }
}

-----------------------------------分割線-----------------------------------

/**
 * 4 在生活中,人們都會(huì)根據(jù)實(shí)際情況為完成某項(xiàng)任務(wù)而選擇利用不同的工具.
 * 如我要旅行,會(huì)用到汽車或者飛機(jī),我在打印文件時(shí)會(huì)用到打印機(jī),我要學(xué)習(xí)
 * java會(huì)用到筆記本電腦, 如何設(shè)計(jì)一個(gè)應(yīng)用程序定義一個(gè)人類并在人類中
 * 定義一個(gè)使用工具的方法, 能夠讓在真正使用工具時(shí), 用什么工具則這個(gè)
 * 工具就能夠出現(xiàn)在使用工具的過程中,請根據(jù)java語言繼承及多態(tài)的特點(diǎn)
 * 完成此編程任務(wù).
 */

package test;

import abstracts.Tool;
import imp.*;

//定義一個(gè)主類Test
public class Test {
    public static void main(String[] args) {
        //實(shí)例化Person類
        Person per = new Person();
        //通過多態(tài)的方式,以父類的類型實(shí)例化各個(gè)子類
        Tool car = new Car();
        Tool plane = new Plane();
        Tool print = new Printer();
        Tool laptop = new Laptop();

        //調(diào)用對(duì)應(yīng)的子類去具體實(shí)現(xiàn)抽象方法
        per.useTool(car);
        per.useTool(plane);
        per.useTool(print);
        per.useTool(laptop);
    }
}
/**
 * 4 在生活中,人們都會(huì)根據(jù)實(shí)際情況為完成某項(xiàng)任務(wù)而選擇利用不同的工具.
 * 如我要旅行,會(huì)用到汽車或者飛機(jī),我在打印文件時(shí)會(huì)用到打印機(jī),我要學(xué)習(xí)
 * java會(huì)用到筆記本電腦, 如何設(shè)計(jì)一個(gè)應(yīng)用程序定義一個(gè)人類并在人類中
 * 定義一個(gè)使用工具的方法, 能夠讓在真正使用工具時(shí), 用什么工具則這個(gè)
 * 工具就能夠出現(xiàn)在使用工具的過程中,請根據(jù)java語言繼承及多態(tài)的特點(diǎn)
 * 完成此編程任務(wù).
 */

package abstracts;

//定義一個(gè)抽象的工具類作為父類
public abstract class Tool {
    //定義一個(gè)旅行的抽象方法
    public abstract void travel();

    //定義一個(gè)打印的抽象方法
    public abstract void print();

    //定義一個(gè)學(xué)習(xí)的抽象方法
    public abstract void study();
}
/**
 * 4 在生活中,人們都會(huì)根據(jù)實(shí)際情況為完成某項(xiàng)任務(wù)而選擇利用不同的工具.
 * 如我要旅行,會(huì)用到汽車或者飛機(jī),我在打印文件時(shí)會(huì)用到打印機(jī),我要學(xué)習(xí)
 * java會(huì)用到筆記本電腦, 如何設(shè)計(jì)一個(gè)應(yīng)用程序定義一個(gè)人類并在人類中
 * 定義一個(gè)使用工具的方法, 能夠讓在真正使用工具時(shí), 用什么工具則這個(gè)
 * 工具就能夠出現(xiàn)在使用工具的過程中,請根據(jù)java語言繼承及多態(tài)的特點(diǎn)
 * 完成此編程任務(wù).
 */
package adaptor;

import abstracts.Tool;

//定義一個(gè)適配器,繼承工具類并提供3個(gè)方法的空實(shí)現(xiàn)
public class ToolAdaptor extends Tool {
    @Override
    public void travel() {

    }

    @Override
    public void print() {

    }

    @Override
    public void study() {

    }
}
/**
 * 4 在生活中,人們都會(huì)根據(jù)實(shí)際情況為完成某項(xiàng)任務(wù)而選擇利用不同的工具.
 * 如我要旅行,會(huì)用到汽車或者飛機(jī),我在打印文件時(shí)會(huì)用到打印機(jī),我要學(xué)習(xí)
 * java會(huì)用到筆記本電腦, 如何設(shè)計(jì)一個(gè)應(yīng)用程序定義一個(gè)人類并在人類中
 * 定義一個(gè)使用工具的方法, 能夠讓在真正使用工具時(shí), 用什么工具則這個(gè)
 * 工具就能夠出現(xiàn)在使用工具的過程中,請根據(jù)java語言繼承及多態(tài)的特點(diǎn)
 * 完成此編程任務(wù).
 */
package imp;

import adaptor.ToolAdaptor;

//定義一個(gè)汽車類繼承父類的適配器,重寫并具體實(shí)現(xiàn)旅行的這個(gè)抽象方法
public class Car extends ToolAdaptor {
    @Override
    public void travel() {
        System.out.println("使用汽車旅行");
    }
}
/**
 * 4 在生活中,人們都會(huì)根據(jù)實(shí)際情況為完成某項(xiàng)任務(wù)而選擇利用不同的工具.
 * 如我要旅行,會(huì)用到汽車或者飛機(jī),我在打印文件時(shí)會(huì)用到打印機(jī),我要學(xué)習(xí)
 * java會(huì)用到筆記本電腦, 如何設(shè)計(jì)一個(gè)應(yīng)用程序定義一個(gè)人類并在人類中
 * 定義一個(gè)使用工具的方法, 能夠讓在真正使用工具時(shí), 用什么工具則這個(gè)
 * 工具就能夠出現(xiàn)在使用工具的過程中,請根據(jù)java語言繼承及多態(tài)的特點(diǎn)
 * 完成此編程任務(wù).
 */
package imp;

import adaptor.ToolAdaptor;

//定義一個(gè)飛機(jī)類繼承父類的適配器,重寫并具體實(shí)現(xiàn)旅行的這個(gè)抽象方法
public class Plane extends ToolAdaptor {
    @Override
    public void travel(){
        System.out.println("使用飛機(jī)旅行");
    }
}
/**
 * 4 在生活中,人們都會(huì)根據(jù)實(shí)際情況為完成某項(xiàng)任務(wù)而選擇利用不同的工具.
 * 如我要旅行,會(huì)用到汽車或者飛機(jī),我在打印文件時(shí)會(huì)用到打印機(jī),我要學(xué)習(xí)
 * java會(huì)用到筆記本電腦, 如何設(shè)計(jì)一個(gè)應(yīng)用程序定義一個(gè)人類并在人類中
 * 定義一個(gè)使用工具的方法, 能夠讓在真正使用工具時(shí), 用什么工具則這個(gè)
 * 工具就能夠出現(xiàn)在使用工具的過程中,請根據(jù)java語言繼承及多態(tài)的特點(diǎn)
 * 完成此編程任務(wù).
 */
package imp;

import adaptor.ToolAdaptor;

//定義一個(gè)筆記本電腦類繼承父類的適配器,重寫并具體實(shí)現(xiàn)學(xué)習(xí)的這個(gè)抽象方法
public class Laptop extends ToolAdaptor {
    @Override
    public void study(){
        System.out.println("使用筆記本電腦學(xué)習(xí)Java");
    }
}
/**
 * 4 在生活中,人們都會(huì)根據(jù)實(shí)際情況為完成某項(xiàng)任務(wù)而選擇利用不同的工具.
 * 如我要旅行,會(huì)用到汽車或者飛機(jī),我在打印文件時(shí)會(huì)用到打印機(jī),我要學(xué)習(xí)
 * java會(huì)用到筆記本電腦, 如何設(shè)計(jì)一個(gè)應(yīng)用程序定義一個(gè)人類并在人類中
 * 定義一個(gè)使用工具的方法, 能夠讓在真正使用工具時(shí), 用什么工具則這個(gè)
 * 工具就能夠出現(xiàn)在使用工具的過程中,請根據(jù)java語言繼承及多態(tài)的特點(diǎn)
 * 完成此編程任務(wù).
 */
package imp;

import adaptor.ToolAdaptor;

//定義一個(gè)打印機(jī)類繼承父類的適配器,重寫并具體實(shí)現(xiàn)打印的這個(gè)抽象方法
public class Printer extends ToolAdaptor {
    @Override
    public void print() {
        System.out.println("使用打印機(jī)打印文件");
    }


}
/**
 * 4 在生活中,人們都會(huì)根據(jù)實(shí)際情況為完成某項(xiàng)任務(wù)而選擇利用不同的工具.
 * 如我要旅行,會(huì)用到汽車或者飛機(jī),我在打印文件時(shí)會(huì)用到打印機(jī),我要學(xué)習(xí)
 * java會(huì)用到筆記本電腦, 如何設(shè)計(jì)一個(gè)應(yīng)用程序定義一個(gè)人類并在人類中
 * 定義一個(gè)使用工具的方法, 能夠讓在真正使用工具時(shí), 用什么工具則這個(gè)
 * 工具就能夠出現(xiàn)在使用工具的過程中,請根據(jù)java語言繼承及多態(tài)的特點(diǎn)
 * 完成此編程任務(wù).
 */

package imp;

import abstracts.Tool;

//定義一個(gè)Person類
public class Person {
    //定義一個(gè)使用工具的方法,接收tool抽象類的類型,并調(diào)用tool抽象類的三個(gè)抽象方法
    public void useTool(Tool tool){
        tool.travel();
        tool.print();
        tool.study();
    }
}

以上就是Java抽象類、繼承及多態(tài)和適配器的實(shí)現(xiàn)的詳細(xì)內(nèi)容,更多關(guān)于java抽象類繼承多態(tài)的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • SpringBoot讀取resource目錄下文件失敗的原因及解決方案

    SpringBoot讀取resource目錄下文件失敗的原因及解決方案

    在idea中運(yùn)行時(shí),有些resource下文件讀取工具類能夠正常獲取讀取到文件,但是通過java–jar的方式去運(yùn)行jar包,此時(shí)resource下文件讀取工具類讀取文件就失效了,本文就給大家介紹一下SpringBoot讀取resource目錄下文件失敗解決方案,需要的朋友可以參考下
    2023-08-08
  • Java如何通過反射機(jī)制獲取數(shù)據(jù)類對(duì)象的屬性及方法

    Java如何通過反射機(jī)制獲取數(shù)據(jù)類對(duì)象的屬性及方法

    文章介紹了如何使用Java反射機(jī)制獲取類對(duì)象的所有屬性及其對(duì)應(yīng)的get、set方法,以及如何通過反射機(jī)制實(shí)現(xiàn)類對(duì)象的實(shí)例化,感興趣的朋友跟隨小編一起看看吧
    2025-01-01
  • 最流行的java后臺(tái)框架spring quartz定時(shí)任務(wù)

    最流行的java后臺(tái)框架spring quartz定時(shí)任務(wù)

    近日項(xiàng)目開發(fā)中需要執(zhí)行一些定時(shí)任務(wù),比如需要在每天凌晨時(shí)候,分析一次前一天的日志信息,借此機(jī)會(huì)整理了一下定時(shí)任務(wù)的幾種實(shí)現(xiàn)方式,由于項(xiàng)目采用spring框架,所以我都將結(jié)合spring框架來介紹
    2015-12-12
  • java匿名內(nèi)部類實(shí)例簡析

    java匿名內(nèi)部類實(shí)例簡析

    匿名類是不能有名稱的類,所以沒辦法引用它們,必須在創(chuàng)建時(shí),作為new語句的一部分來聲明它們,需要了解更多的可以參考本文
    2012-11-11
  • 淺談Spring中HandlerMapping的使用

    淺談Spring中HandlerMapping的使用

    這篇文章主要介紹了淺談Spring中HandlerMapping的使用,Spingmvc中的HandlerMapping負(fù)責(zé)解析請求URL,對(duì)應(yīng)到Handler進(jìn)行處理,這里的Handler一般為Controller里的一個(gè)方法method,也可以為servlet或者Controller等,需要的朋友可以參考下
    2023-08-08
  • 使用Spring啟動(dòng)時(shí)運(yùn)行自定義業(yè)務(wù)

    使用Spring啟動(dòng)時(shí)運(yùn)行自定義業(yè)務(wù)

    這篇文章主要介紹了使用Spring啟動(dòng)時(shí)運(yùn)行自定義業(yè)務(wù)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Java設(shè)計(jì)模式之適配器模式的示例詳解

    Java設(shè)計(jì)模式之適配器模式的示例詳解

    適配器模式,即將某個(gè)類的接口轉(zhuǎn)換成客戶端期望的另一個(gè)接口的表示,主要目的是實(shí)現(xiàn)兼容性,讓原本因?yàn)榻涌诓黄ヅ?,沒辦法一起工作的兩個(gè)類,可以協(xié)同工作。本文將通過示例詳細(xì)介紹適配器模式,需要的可以參考一下
    2022-02-02
  • Java日期工具類時(shí)間校驗(yàn)實(shí)現(xiàn)

    Java日期工具類時(shí)間校驗(yàn)實(shí)現(xiàn)

    一般項(xiàng)目中需要對(duì)入?yún)⑦M(jìn)行校驗(yàn),比如必須是一個(gè)合法的日期,本文就來介紹一下Java日期工具類時(shí)間校驗(yàn)實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-12-12
  • Maven版本依賴pom文件內(nèi)容及使用剖析

    Maven版本依賴pom文件內(nèi)容及使用剖析

    這篇文章主要為大家介紹了Maven版本依賴pom文件內(nèi)容及使用剖析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • 一文帶你掌握J(rèn)ava ImageIO類

    一文帶你掌握J(rèn)ava ImageIO類

    Java中的ImageIO類是Java標(biāo)準(zhǔn)庫中用于處理圖像的一個(gè)非常常用的 API,它提供了讀取和寫入多種常見圖像格式的功能,如JPEG、PNG、BMP、GIF等,本文將全面詳細(xì)地介紹Java中的ImageIO類的使用方法,需要的朋友可以參考下
    2023-05-05

最新評(píng)論

濮阳市| 许昌县| 祁连县| 正阳县| 资源县| 琼海市| 象州县| 辉县市| 光山县| 江都市| 珲春市| 东乌珠穆沁旗| 和硕县| 子洲县| 阳东县| 云和县| 博野县| 长寿区| 分宜县| 寻乌县| 洛浦县| 沾化县| 和平区| 田阳县| 额尔古纳市| 汨罗市| 海宁市| 景谷| 应城市| 阿合奇县| 华坪县| 沈阳市| 蓬莱市| 呼和浩特市| 河北区| 商水县| 彰化市| 通河县| 定陶县| 罗定市| 扎囊县|