Java學習筆記16(面向對象九:補充內容)

来源:https://www.cnblogs.com/xuyiqing/archive/2018/01/10/8249962.html
-Advertisement-
Play Games

總是看到四種許可權,這裡做一個介紹: 最大許可權是public,後面依次是protected,default,private private修飾的只在本類可以使用 public是最大許可權,可以跨包使用,不同包的子類和無關類都可以使用,可以修飾類,方法,成員變數 不寫許可權就是default預設許可權:限於本 ...


總是看到四種許可權,這裡做一個介紹:

最大許可權是public,後面依次是protected,default,private

private修飾的只在本類可以使用

public是最大許可權,可以跨包使用,不同包的子類和無關類都可以使用,可以修飾類,方法,成員變數

不寫許可權就是default預設許可權:限於本包內使用

protected許可權:跨包後的類如果有繼承關係(子類),不能使用default修飾的,而可以使用protected修飾的,調用時候必須在子類的裡面才可以調用父類的受保護許可權,註意protected不能修飾類

 

日常開發用的只有:public、private

 

另外註意:

abstract不可以與static,private,final寫在一起

 

關於代碼塊:

示例

public class Person {
    private String name;
    private int age;
    public Person(String name,int age){
        this.age = age;
        this.name = name;
        System.out.println("構造方法");
    }
    //構造代碼塊
    {
        System.out.println("構造方法代碼塊");
    }
    //靜態代碼塊
    static{
        System.out.println("靜態代碼塊");
    }
}
//靜態代碼塊,只執行一次
//構造代碼塊,每次創建對象都會執行,優先於構造方法
public class Test {
    public static void main(String[] args) {
        Person person1 = new Person("張三", 18);
        Person person2 = new Person("李四", 18);
    }
}
/*
輸出:
靜態代碼塊
構造方法代碼塊
構造方法
構造方法代碼塊
構造方法
*/

 

 

還有一些補充內容:

文檔註釋和生成jar包

隨意寫一個類

package demo;

/**
 * @author dell
 * @version 1.0
 */
public class Person {
    /**
     * 
     * @param a
     * @param b
     * @return function
     */
    public int function(int a, int b){
        return a+b;
    }
}

利用eclipse,選擇工程,右鍵export裡面有選擇Java,裡面有Javadoc等文件,

選擇後會生成一套網頁,相當於說明書,可以查看相關內容

也可以選擇java的其他選項,生成jar包等

 

導入jar包方式:

通常是在工程目錄下新建一個lib文件夾,放入jar包,右鍵build path  -> add to build path,使用時候import就可以了

 

面向對象的補充:

1.類可以作為方法的參數傳遞,即方法的參數可以是一個對象,實質上是傳遞一個記憶體地址,在方法中進行對象的相關操作

2.和第一條類似,類也可以作為方法的返回值,即返回一個對象的引用

3.抽象類也可以作為方法的參數和返回值,區別在於:

   抽象類沒有對象,只能利用多態的特性傳遞(返回)抽象類的子類對象,註意接收返回值的時候類型必須是抽象類而不是子類

4.介面同樣可以作為方法的參數和返回值:

   介面也沒有對象,必須傳遞介面的實現類對象,註意可以利用多態創建實現類對象也可以直接創建實現類對象,

   同樣,作為返回值的時候雖然傳入的是實現類對象,但是接收的時候必須是介面類型

 

針對上面的補充內容寫一個簡單的案例來理解:

 

public abstract class Animal {
    public abstract void eat();
    public static Animal getInstance(){
        return new Cat();
    }
}
public class Cat extends Animal {
    public void eat(){
        System.out.println("貓在吃");
    }
}
public class Test {
    public static void main(String[] args) {
        Animal a = Animal.getInstance();
        a.eat();//輸出:貓吃魚
    }
}

 


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

-Advertisement-
Play Games
更多相關文章
  • FCC-學習筆記 DNA Pairing 1>最近在學習和練習FCC的題目。這個真的比較的好,推薦給大家。 2>中文版的地址:https://www.freecodecamp.cn/;英文版的地址:https://www.freecodecamp.org 3>這次寫關於一個JS的問題,名為DNA P ...
  • 一、安裝實例 1、創建實例目錄 [root@node004]# mkdir -p /usr/local/solr/home/jonychen 2、複製實例相關配置文件 [root@node004]# cp /usr/local/solr/home/configsets/_default/conf - ...
  • 設計模式(Design Patterns) 一、設計模式的分類 總體來說設計模式分為三大類: 創建型模式,共五種:工廠方法模式、抽象工廠模式、單例模式、建造者模式、原型模式。 結構型模式,共七種:適配器模式、裝飾器模式、代理模式、外觀模式、橋接模式、組合模式、享元模式。 行為型模式,共十一種:策略模 ...
  • 在主流的Web站點中,圖片往往是不可或缺的頁面元素,尤其在大型網站中,幾乎都將面臨“海量圖片資源”的存儲、訪問等相關技術問題。在針對圖片伺服器的架構擴展中,也會歷經很多曲折甚至是血淚教訓(尤其是早期規劃不足,造成後期架構上很難相容和擴展)。 本文將以一個真實垂直門戶網站的發展歷程,向大家娓娓道來。 ...
  • 頁面: 上傳文件時的關鍵詞:enctype="multipart/form-data" 後臺:controller 工具類 實體類 ...
  • 變數 初識變數 變數(variable)是學習Python初始時,就會接觸到的一個新知識點,也會一個需要熟知的概念。Python是一種動態類型語言,在賦值的執行中可以綁定不通類型的值,這個過程叫做變數賦值操作,賦值同時確定了變數的類型。 變數命名規範 變數由字母、數字、下劃線組成 變數不能由數字開頭 ...
  • 當我們用到大量的數據時,不可能將數據都寫入程式中,可以寫入文件里,在程式需要用到時,去讀取或者修改它。 讀寫文件 以讀文件的模式打開一個文件對象,使用內置函數open(),將會返回一個 file 對象,基本語法格式如下: 下麵是mode的一些參數,預設為r 只讀: 'r':以只讀方式打開文件(預設) ...
  • 在面向對象這個專題的最後 結合前面多篇文章,用到了面向對象的很多方面知識,做了一個簡單的案例: 飯店案例: ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...