Java中的抽象類和介面

来源:http://www.cnblogs.com/cbs-writing/archive/2017/06/23/7068847.html
-Advertisement-
Play Games

想要瞭解介面我們要先知道抽象類。那麼什麼是抽象類呢? 問題描述:生活中我們有很多的對象是無法具體描述的,比如說:我們可以說四邊形有四條邊。或者具體點說就是矩形兩邊對稱且相等,正方形四邊對稱且相等。但是對於普通的圖形而言就很難具體描述了。轉換成Java語言就是說:對於一個很具體的類我們可以很方便的定義 ...


想要瞭解介面我們要先知道抽象類。那麼什麼是抽象類呢?

問題描述:生活中我們有很多的對象是無法具體描述的,比如說:我們可以說四邊形有四條邊。或者具體點說就是矩形兩邊對稱且相等,正方形四邊對稱且相等。但是對於普通的圖形而言就很難具體描述了。轉換成Java語言就是說:對於一個很具體的類我們可以很方便的定義它的各種屬性和方法,但是對於有一些類我們卻難以瞭解它的方法時如何實現的。這時我們就可以用到抽象類。

抽象類的語法格式如下:

1 public abstract class 類名{
2   abstract 返回值類型 方法名(參數列表);//定義抽象方法      
3 }

定義抽象方法的關鍵字是:abstract。

使用abstract定義的類稱為抽象類,而使用abstract定義的方法稱為抽象方法。

抽象方法沒有方法體,本身也沒有任何意義,因此抽象類是不能夠被實例化的。

當它被其子類繼承時,子類必須實現其中的抽象所有方法。

只要類中有一個抽象放方法,此類就必須定義為抽象類。

 

瞭解了抽象類,我們繼續思考下麵的問題,來看先下麵一段代碼:

public abstract class shape 
{
    //定義一個圖形抽象類
    public abstract void toString();//toString抽象方法
    public abstract void paint();//畫圖的抽象方法
}

public class triangle extends shape
{
    public void toString()
    {
        system.out.println("toString");
    }

    public void paint()
    {
        system.out.println("paint");
    }
}

這樣看起來好像沒有什麼問題。如果我們有些類中不希望它有paint方法怎麼辦?把paint方法放到另一個類中?但是其它的類還要使用這個方法。而Java的語法規定了,類是不能多繼承的,怎麼辦?這時我們就可以考慮使用介面了。

介面是抽象類的延伸,解決了Java中不能多繼承的缺點。我們可以把paint方法封裝到一個介面中,然後讓需要用的圖形類的子類實現這個介面。而Java中一個類是可以實現多個介面的,我們可以把不同的方法封裝在介面中,交給類來使用。

介面的關鍵字是interface。其定義如下:

public interface 介面名  extends 類名  implements 介面,....{
  //定義常量
  public static final 數據類型 常量名=值;
  //定義抽象方法
  public abstract 返回值類型 方法名 (參數列表);        
}

要註意的是:1.介面不能被實例化   2.介面的訪問修飾符只能是public  3.介面會預設提供public abstract static final關鍵字

ps:小白上路,歡迎指正。


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

-Advertisement-
Play Games
更多相關文章
  • 1.看似針對同樣一段查詢表ef達式,重覆執行卻沒有被記錄下來。其實這是正常情況,因為ef並沒有重覆去執行 相同sql查詢。 2.MiniProfiler結合MVC過濾器進行 攔截記錄Sql,示例代碼: 3.以上的miniprofiler並不能 攔截到 sql語句查詢,需要使用 minprofiler ...
  • 一、WCF簡介 1、什麼是WCF? WCF的全稱是:Windows Communication Foundation。從本質上來說,它是一套軟體開發包,是微軟公司推出的符合SOA思想的技術框架。 2、WCF中包括哪些東西? WCF為程式員提供了豐富的功能,其中包括:托管、服務實例管理、非同步、安全、事 ...
  • <div style="float: left;border-radius:70%; height: 80px; overflow:hidden;"> <img class="mui-icon-image" src="../../img/002 劉運忠.jpg" style="height: 80p ...
  • <div id="segmented" class="mui-segmented-control"> <a class="mui-control-item mui-active" href="#item1mobile"> 考勤記錄 </a> <a class="mui-control-item" h ...
  • //論文要用到其改進演算法,在此先demo測試一下using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ... ...
  • 閉包(closure)是函數式編程的重要的語法結構。閉包也是一種組織代碼的結構,它同樣提高了代碼的可重覆使用性。 如果在一個內嵌函數里,對在外部函數內(但不是在全局作用域)的變數進行引用,那麼內嵌函數就被認為是閉包(closure)。 定義在外部函數內但由內部函數引用或者使用的變數稱為自由變數。 總 ...
  • 用python3.4讀取Excel中的數據並繪圖,一個簡單的實現。 ...
  • 主線程:執行主方法的線程,就叫做主線程 單線程程式:程式從mani開始從上到下依次運行 程式從main方法開始運行,JVM運行main方法,會找操作系統 開闢一條通向cpu的執行路徑,cpu可以通過這條路徑來執行main方法 這條路徑有一個名字叫主(main)線程 創建線程方式一繼承Thread類 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...