14_Java面向對象_第14天(Eclipse高級、類與介面作為參數返回值)_講義

来源:https://www.cnblogs.com/wanghui1234/archive/2018/08/27/9544970.html
-Advertisement-
Play Games

1、Eclipse常用快捷鍵操作 2、Eclipse文檔註釋導出幫助文檔 3、Eclipse項目的jar包導出與使用jar包 4、不同修飾符混合使用細節 5、辨析何時定義變數為成員變數 6、類、抽象類、介面作為方法參數 7、類、抽象類、介面作為方... ...


今日內容介紹
1、Eclipse常用快捷鍵操作
2、Eclipse文檔註釋導出幫助文檔
3、Eclipse項目的jar包導出與使用jar包
4、不同修飾符混合使用細節
5、辨析何時定義變數為成員變數
6、類、抽象類、介面作為方法參數
7、類、抽象類、介面作為方法返回值

01eclipse快捷鍵

  • A: Ctrl+T:查看所選中類的繼承樹

    例如,在下麵代碼中,選中Teacher類名,然後按Ctrl+T,就會顯示出Teacher類的繼承關係

  • B:查看所選中方法的源代碼

    Ctrl+滑動滑鼠點擊方法名,或者選中方法名後,按F3鍵查看所選中方法的源代碼。

02java中的文檔註釋和製作

  • A: 在eclipse使用時,可以配合文檔註釋,導出對類的說明文檔,從而供其 他人閱讀學習與使用。
  •   通過使用文檔註釋,將類或者方法進行註釋用@簡單標註基本信息。
      如@author 作者、@version代碼版本、@param方法參數、@return方法返回值等。

03eclipse生成jar包

04JAVA_HOME配置

05導入jar包

  • A:  導入jar包:即把指定的jar包,加入到指項目中,提供給項目使用。

      導入jar包的過程是將jar包加入到項目的.classpath文件中去,讓項目識別,便可以使用jar包中所有的.class文件類。
    
      以下是加入步驟:
    
      1:項目根文件夾下創建lib文件夾,用於同一管理所有的jar文件
      2:把jar文件複製到lib文件夾中
      3:右鍵點擊jar文件,點擊Build Path,選擇Add to Build Path,此時查
      看項目根文件夾下的.classpath文件,發現新加入的jar包路徑被配置到了該文件中。
      說明可以使用jar包中所有類了。

    註意:

      Jar包加入後,必須Add to Build Path才能使用
      Jar包加入後,加入的類也必須導包,如果加入的類其包名與現有類包名相同,則視作在同一個包下。(不常見)

07不同修飾符使用細節

A: 常用來修飾類、方法、變數的修飾符如下:
           public 許可權修飾符,公共訪問, 類,方法,成員變數
           protected 許可權修飾符,受保護訪問, 方法,成員變數
           預設什麼也不寫 也是一種許可權修飾符,預設訪問, 類,方法,成員變數
           private 許可權修飾符,私有訪問, 方法,成員變數
           static 靜態修飾符  方法,成員變數
           final 最終修飾符   類,方法,成員變數,局部變數
           abstract 抽象修飾符  類 ,方法

B: 不能同時使用的修飾符
        同時,abstract與private不能同時使用;
        同時,abstract與static不能同時使用;
        同時,abstract與final不能同時使用。

C: 修飾類能夠使用的修飾符:
        修飾類只能使用public、預設的、final、abstract關鍵字
        使用最多的是 public關鍵字

        a:代碼案例
            public class Demo {} //最常用的方式
            class Demo2{}
            public final class Demo3{}
            public abstract class Demo4{}

D:修飾成員變數能夠使用的修飾符:
        public : 公共的
        protected : 受保護的
            : 預設的
        private :私有的
        final : 最終的
        static : 靜態的
        使用最多的是 private

    a: 代碼案例
            public int count = 100;
            protected int count2 = 100;
            int count3 = 100;
            private int count4 = 100; //最常用的方式
            public final int count5 = 100;
            public static int count6 = 100;


E:修飾構造方法能夠使用的修飾符:
        public : 公共的
        protected : 受保護的
            : 預設的
        private :私有的
        使用最多的是 public

        a:代碼案例
            public Demo(){} //最常用的方式
            protected Demo(){}
            Demo(){}
            private Demo(){}

            修飾成員方法能夠使用的修飾符:
                public : 公共的
                protected : 受保護的
                    : 預設的
                private :私有的
                final : 最終的
                static : 靜態的
                abstract : 抽象的
                使用最多的是 public
            public void method1(){}//最常用的方式
            protected void method2(){}
            void method3(){}
            private void method4(){}
            public final void method5(){}
            public static void method6(){}//最常用的方式
            public abstract void method7();//最常用的方式

07局部變數和成員變數解析

* A:程式編譯
        數學工具類
public class MathTool {
    //求兩個數的和的二倍
    public double sum2times(int number,int number2) {
        return (number+number2)*2;
    }
    //求兩個數的積
    public double area(int number,int number2) {
        return number*number2;
    }
}

長方形類
public class CFX {
    //因為長與寬,在現實事物中屬於事物的一部分,所以定義成員變數
    private int chang;
    private int kuan;
    
    public CFX(int chang, int kuan) {
        this.chang = chang;
        this.kuan = kuan;
    }
    
    //求長與寬的周長
    public double zhouChang() {
        return (chang+kuan)*2;
    }
    //求長與寬的面積
    public double mianJi() {
        return chang*kuan;
    }
    public int getChang() {
        return chang;
    }
    public void setChang(int chang) {
        this.chang = chang;
    }
    public int getKuan() {
        return kuan;
    }
    public void setKuan(int kuan) {
        this.kuan = kuan;
    }
}

08類作為方法的參數

* A:    類作為方法參數
    在編寫程式中,會經常碰到調用的方法要接收的是一個類類型的情況,那麼這時,要向方法中傳入該類的對象。

    如下代碼演示:
        class Person{
            public void show(){
                System.out.println("show方法執行了");
            }
        }
        //測試類
        public class Test {
            public static void main(String[] args) {
                //創建Person對象
                Person p = new Person();
                //調用method方法
                method(p);
            }
            
        //定義一個方法method,用來接收一個Person對象,在方法中調用Person對象的show方法
        public static void method(Person p){
            p.show();
        }

09抽象類作為方法參數與返回值

* A:    抽象類作為方法參數
    今後開發中,抽象類作為方法參數的情況也很多見。當遇到方法參數為抽象類類型時,要傳入一個實現抽象類所有抽象方法的子類對象。如下代碼演示:
    //抽象類
    abstract class Person{
        public abstract void show();
    }
    class Student extends Person{
        @Override
        public void show() {
            System.out.println("重寫了show方法");
        }
    }
    //測試類
    public class Test {
        public static void main(String[] args) {
            //通過多態的方式,創建一個Person類型的變數,而這個對象實際是Student
            Person p = new Student();
            //調用method方法
            method(p);
        }
        
        //定義一個方法method,用來接收一個Person類型對象,在方法中調用Person對象的show方法
        public static void method(Person p){//抽象類作為參數
            //通過p變數調用show方法,這時實際調用的是Student對象中的show方法
            p.show();   
    }
    }


* B:   抽象類作為方法返回值
    抽象類作為方法返回值的情況,也是有的,這時需要返回一個實現抽象類所有抽象方法的子類對象。如下代碼演示:
    //抽象類
    abstract class Person{
        public abstract void show();
    }
    class Student extends Person{
        @Override
        public void show() {
            System.out.println("重寫了show方法");
        }
    }
    //測試類
    public class Test {
        public static void main(String[] args) {
            //調用method方法,獲取返回的Person對象
            Person p = method();
            //通過p變數調用show方法,這時實際調用的是Student對象中的show方法
            p.show();
        }
        
        //定義一個方法method,用來獲取一個Person對象,在方法中完成Person對象的創建
        public static Person method(){
            Person p = new Student();
            return p;
        }
    }

10介面作為方法參數與返回值

* A:   介面作為方法參數
    介面作為方法參數的情況是很常見的,經常會碰到。當遇到方法參數為介面類型時,
    那麼該方法要傳入一個介面實現類對象。如下代碼演示。
    //介面
    interface Smoke{
        public abstract void smoking();
    }
    class Student implements Smoke{
        @Override
        public void smoking() {
            System.out.println("課下吸口煙,賽過活神仙");
        }
    }
    //測試類
    public class Test {
        public static void main(String[] args) {
            //通過多態的方式,創建一個Smoke類型的變數,而這個對象實際是Student
            Smoke s = new Student();
            //調用method方法
            method(s);
        }
        
        //定義一個方法method,用來接收一個Smoke類型對象,在方法中調用Smoke對象的show方法
        public static void method(Smoke sm){//介面作為參數
            //通過sm變數調用smoking方法,這時實際調用的是Student對象中的smoking方法
            sm.smoking();
        }
    }

* B:   介面作為方法返回值
    介面作為方法返回值的情況,在後面的學習中會碰到。當遇到方法返回值是介面類型時,
    那麼該方法需要返回一個介面實現類對象。如下代碼演示。

    //介面
    interface Smoke{
        public abstract void smoking();
    }
    class Student implements Smoke{
        @Override
        public void smoking() {
            System.out.println("課下吸口煙,賽過活神仙");
        }
    }
    //測試類
    public class Test {
        public static void main(String[] args) {
            //調用method方法,獲取返回的會吸煙的對象
            Smoke s = method();
            //通過s變數調用smoking方法,這時實際調用的是Student對象中的smoking方法
            s.smoking();
        }
        
        //定義一個方法method,用來獲取一個具備吸煙功能的對象,併在方法中完成吸煙者的創建
        public static Smoke method(){
            Smoke sm = new Student();
            return sm;
        }
    }

11星級酒店案例

* A: 根據“某五星級酒店,資金雄厚……都有自己的工作要做。”分析出,該題      目中包含酒店,可以把它封裝成類,多名員工)。

        class 員工 {
             屬性:姓名
        屬性:工號
        方法:工作
        }
        class 廚師 extends 員工{}
        class 服務員 extends 員工{}
        class 經理 extends 員工 {
             屬性:獎金
        }

        員工的類型有經理、廚師、服務員,它們有共同的屬性(姓名、工號、),經理額外屬性(獎金)。

       根據“向酒店中,增加多名員工(其中包含1名經理,1名廚師、2名服務員)”。
    分析出,要創建一個酒店對象,並添加4名員工到酒店對象的員工集合中。
        酒店員工集合添加新員工: 經理對象
        酒店員工集合添加新員工: 廚師對象
        酒店員工集合添加新員工: 服務員對象
        酒店員工集合添加新員工: 服務員對象

       根據“獲取酒店幸運員工”。分析出,從酒店員工集合隨機得到一名員工對象。
        1. 從酒店員工集合長度範圍內,隨機產生一個隨機數
        2. 使用該隨機數作為集合的索引,返回該索引處對應的員工對象

       根據“酒店開設VIP服務,酒店的廚師與服務員可以提供VIP服務。
        (廚師做菜加量、服務員給顧客倒酒)”。分析出,這是要增加一個VIP的介面,
            介面中提供個VIP服務的方法。讓廚師與服務員實現該介面。
        interface VIP服務{
             抽象方法:服務
        }
        class 廚師 extends 員工 implements VIP服務{ 重寫服務方法 }
        class 服務員 extends 員工 implements VIP服務{ 重寫服務方法 }

實現代碼步驟

VIP服務

public interface VIP {
     public abstract void server(); //服務
}

員工

/*
 *  員工:
         姓名 String
         工號 String
    
 */
public abstract class YuanGong {
    // 成員變數
    private String xingMing;
    private String gongHao;
    // 構造方法
    public YuanGong() {
        super();
    }
    public YuanGong(String xingMing, String gongHao) {
        super();
        this.xingMing = xingMing;
        this.gongHao = gongHao;
    
    }
    // 抽象方法
    public abstract void work();
    
    // getters與setters
    public String getXingMing() {
        return xingMing;
    }
    public void setXingMing(String xingMing) {
        this.xingMing = xingMing;
    }
    public String getGongHao() {
        return gongHao;
    }
    public void setGongHao(String gongHao) {
        this.gongHao = gongHao;
    }
    
}

服務員

/*
 * 定義員工的子類 服務員類
 */
public class FuWuYuan extends YuanGong implements VIP {
    public FuWuYuan() {
        super();
    }

    public FuWuYuan(String xingMing, String gongHao) {
        super(xingMing, gongHao);
    }
    @Override
    public void work() {
        System.out.println("親,全身心為您服務,記得給好評哦");
    }
    @Override
    public void server() {
        System.out.println("給顧客倒酒");
    }
}

經理

/*
 * 經理在員工的基礎上,添加了獎金成員
 */
public class JingLi extends YuanGong {
    private double jiangJin;

    public JingLi() {
        super();
    }
    public JingLi(String xingMing, String gongHao, double jiangJin) {
        super(xingMing, gongHao);
        this.jiangJin = jiangJin;
    }

    public double getJiangJin() {
        return jiangJin;
    }
    public void setJiangJin(double jiangJin) {
        this.jiangJin = jiangJin;
    }

    @Override
    public void work() {
        System.out.println("哪個員工讓顧客不滿意,我扣誰錢");
    };
}

廚師

/*
 * 定義員工的子類 廚師類
 */
public class ChuShi extends YuanGong implements VIP{
    public ChuShi() {
        super();
    }
    public ChuShi(String xingMing, String gongHao) {
        super(xingMing, gongHao);
    }

    @Override
    public void work() {
        System.out.println("我做飯,放心吃吧,包您滿意");
    }
    @Override
    public void server() {
        System.out.println("做菜加量加料");
    }
}

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • web 相信大家都不陌生,平常我們瀏覽網頁用的都是web服務。互聯網起初的web就是非常簡單的頁面,但是隨著客戶需求越來越複雜,需要的功能越來越多,我們的伺服器端需要處理的請求越來越多,需要區分不同的請求,還需要按照不同請求進行請求數據的提取以及資源的分配和運算還有邏輯的處理,最後還需要響應給客戶端 ...
  • 給定一個字元串,找到它的第一個不重覆的字元,並返回它的索引。如果不存在,則返回 -1。 案例: ...
  • IDEA 版本:2018.2.1 1.點擊 File——New——Project 2.選擇SpringInitializr和Jdk, 點擊 next 3.設置相關包名 工程類型選擇MavenProject 點擊next 4.配置Web相關依賴,搜索'web'點擊第一個,IDEA會為你的項目裝載web ...
  • Spring裝配有三種方式: 基於XML的顯式配置 基於註解的自動裝配 在java中進行顯示配置 1、基於註解的自動裝配 Spring從組件掃描和自動裝配兩個角度實現自動轉配 組件掃描:Spring會自動發現應用上下文中所創建的bean,配置時需要指定掃描的包 組件掃描會將標記了以下註解的類實例化交 ...
  • 前言 在 "上一篇" 中我們學習了結構型模式的適配器模式和橋接模式。本篇則來學習下結構型模式的外觀模式和裝飾器模式。 外觀模式 簡介 外觀模式隱藏系統的複雜性,並向客戶端提供了一個客戶端可以訪問系統的介面。這種類型的設計模式屬於結構型模式,它向現有的系統添加一個介面,來隱藏系統的複雜性。 簡單的來說 ...
  • 前言 在互聯網設計架構過程中,日誌非同步落庫,儼然已經是高併發環節中不可缺少的一環。為什麼說是高併發環節中不可缺少的呢? 原因在於,如果直接用mq進行日誌落庫的時候,低併發下,生產端生產數據,然後由消費端非同步落庫,是沒有什麼問題的,而且性能也都是異常的好,估計tp99應該都在1ms以內。但是一旦併發增 ...
  • 什麼是元類 源自一句話: 在Python中, 一切皆對象, 而對象都是由類實例化得到的 對象tea1是調用OldboyTeacher類得到的, 如果說一切皆對象, 那麼OldboyTeacher也是一個對象, 只要是對象都是調用一個類實例化得到的, 即OldboyTeacher=元類(....),內 ...
  • 最近在做註冊登錄服務時,學慣用Go語言操作MySQL資料庫實現用戶數據的增刪改查,現將個人學習心得總結如下,另外附有代碼倉庫地址,歡迎各位有興趣的fork。 軟體環境:Goland、Navicat for MySQL。 一、實現思路 1,我的總體設計思路是先寫出連接資料庫和關閉資料庫的邏輯,再建立四 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...