零基礎學Java第十四天之抽象類

抽象類和抽象類的深入

抽象類

1、理解

抽象類(Abstract Class)是面向對象編程中的一個重要概念,尤其在像Java、C#和C++等編程語言中。抽象類是一種特殊的類,它不能被實例化(即不能創建抽象類的對象),但可以被其他類繼承。抽象類的主要目的是為子類提供一個公共的接口,并實現一些通用的方法或定義一些抽象方法(即只有方法簽名,沒有方法體)。

最簡單的理解:該類中的某個方法不好實現,就將該方法設置為抽象方法,該類就變成抽象類

抽象方法

  1. 沒有代碼塊,并且使用abstract修飾
  2. 抽象方法必須在抽象類中
  3. 交給非抽象的子類重寫

2、關鍵點

  1. 不能被實例化:因為抽象類是一種不完整的類(它可能包含抽象方法),所以你不能直接創建抽象類的對象。
  2. 可以包含抽象方法和非抽象方法:抽象方法是沒有方法體的方法,只有方法簽名。非抽象方法則包含完整的實現。
  3. 子類:一個抽象類可以有零個或多個子類。如果一個類繼承了一個抽象類,那么它必須提供該抽象類中所有抽象方法的實現(除非該子類也是抽象的)。
  4. 用途:抽象類通常用于定義一組相關的子類所共有的公共接口。通過繼承抽象類,子類可以共享一些通用的屬性和方法,并且只需要實現它們特有的部分。

3、使用

// 定義一個抽象類  
abstract class Animal {  // 抽象方法  abstract void makeSound();  // 非抽象方法  void eat() {  System.out.println("The animal eats.");  }  
}  
// 繼承抽象類的子類  
class Dog extends Animal {  // 實現從父類繼承的抽象方法  @Override  void makeSound() {  System.out.println("The dog barks.");  }  
}  // 另一個繼承抽象類的子類  
class Cat extends Animal {  // 實現從父類繼承的抽象方法  @Override  void makeSound() {  System.out.println("The cat meows.");  }  
}  // 在主類中測試  
public class Main {  public static void main(String[] args) {  Dog dog = new Dog();  dog.eat(); // 調用非抽象方法  dog.makeSound(); // 調用抽象方法的實現  Cat cat = new Cat();  cat.eat(); // 調用非抽象方法  cat.makeSound(); // 調用抽象方法的實現  }  
}

2、抽象類的深入

  1. 抽象類中只能有抽象方法?

    抽象類中可以有構造方法、靜態方法、成員方法、抽象方法

  2. 抽象類中不可以沒有抽象方法?

  3. 如果父類是抽象類,則子類必須實現父類的抽象方法?

  4. 抽象類不能有構造方法?

  5. 可以使用new關鍵字來創建抽象類對象?

    不能,創建的是匿名內部類的對象

  1.抽象類中只能有抽象方法?抽象類中可以有構造方法、靜態方法、成員方法、抽象方法2.抽象類中不可以沒有抽象方法?可以,但是毫無意義3.如果父類是抽象類,則子類必須實現父類的抽象方法?不一定,子類如果是抽象類,可以不實現父類的抽象方法4.抽象類不能有構造方法?可以有5.可以使用new關鍵字來創建抽象類對象?不能,創建的是匿名內部類的對象

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/13192.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/13192.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/13192.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

鼠標懸浮(hover)時顯示提示框的效果

在Vue中,你可以使用多種方法來實現鼠標懸浮(hover)時顯示提示框的效果。以下是一個簡單的示例,它使用了Vue的指令(directive)和條件渲染(conditional rendering)來實現這個功能。 首…

關于FIFO Generator IP和XPM_FIFO在涉及位寬轉換上的區別

在Xilinx FPGA中,要實現FIFO的功能時,大部分時候會使用兩種方法: FIFO Generator IP核XPM_FIFO原語 FIFO Generator IP核的優點是有圖形化界面,配置參數非常直觀;缺點是參數一旦固定,想要更改的化就只能重…

一次tomcat閃退處理

雙擊tomcat目錄下bin目錄中startup.bat 在我的電腦上是一閃而過,不能正常地啟動tomcat軟件 以記事本打開startup.bat文件,在文件的結尾處加上pause 然后再雙擊該bat執行,此時窗口就不會關閉,并會將錯誤信息打印在提示框中 可能是…

英偉達發布 VILA 視覺語言模型,實現多圖像推理、增強型上下文學習,性能超越 LLaVA-1.5

前言 近年來,大型語言模型 (LLM) 的發展取得了顯著的成果,并逐漸應用于多模態領域,例如視覺語言模型 (VLM)。VLM 旨在將 LLM 的強大能力擴展到視覺領域,使其能夠理解和處理圖像和文本信息,并完成諸如視覺問答、圖像描…

一看就會的AOP事務

文章目錄 AOPAOP簡介AOP簡介和作用AOP的應用場景為什么要學習AOP AOP入門案例思路分析代碼實現AOP中的核心概念 AOP工作流程AOP工作流程AOP核心概念在測試類中驗證代理對象 AOP切入點表達式語法格式通配符書寫技巧 AOP通知類型AOP通知分類AOP通知詳解 AOP案例案例-測量業務層接…

Linux bc命令(bc指令)(基本計算器)(任意精度計算語言:支持浮點數運算、變量賦值和自定義函數等)

文章目錄 bc命令文檔英文中文 Linux bc 命令詳解bc 命令的基本用法啟動 bc 環境進行基本計算退出 bc bc 中的數學功能執行高級數學計算平方根和指數函數對數函數 處理精度問題 變量和數組變量賦值和使用數組的使用 創建和使用自定義函數 bc 命令的高級用法在腳本中使用 bc基本腳…

Google I/O 大會 | 精彩看點一覽

作者 / 開發者關系和開源總監 Timothy Jordan 2024 年 Google I/O 大會于北京時間 5 月 15 日 1:00am 在加利福尼亞的山景城以 Google 主題演講直播拉開序幕。隨后,在北京時間 4:30am 舉行開發者主題演講。大家可前往回看 "Google 主題演講" 以及 "開…

AIGC時代已至,你準備好抓住機遇了嗎?

一、行業前景 AIGC,即人工智能生成內容,是近年來人工智能領域中發展迅猛的一個分支。隨著大數據、云計算、機器學習等技術的不斷進步,AIGC已經取得了顯著的成果,并且在廣告、游戲、自媒體、教育、電商等多個領域實現了廣泛應用。…

AI寫算法:支持向量機(SVM)

在Python中,我們可以使用scikit-learn庫來實現支持向量機(SVM)。以下是一個簡單的示例,演示如何使用scikit-learn的SVC類來訓練一個SVM分類器,并使用它對一些數據進行預測。 python復制代碼 # 導入必要的庫 from skle…

圖像中的attention及QKV機制解釋

簡單記錄/推薦兩篇博客,后續細化寫一下: 圖像中的各類 attention https://blog.csdn.net/weixin_44505185/article/details/127013204 Cross-attention的直觀理解 首先理解,cross-attention 是兩個不同向量間的相關計算,一般Q…

DolphinScheduler(海豚調度)- docker部署實戰

1.官方文檔 https://dolphinscheduler.apache.org/zh-cn/docs/3.2.1/guide/start/docker 2.docker環境安裝 版本情況(這個地方踩了不少坑):docker-26.1.2,docker-compose-v2.11.0。 具體可使用我上傳的安裝包,一鍵安…

leetcode題目55

跳躍游戲 中等 給你一個非負整數數組 nums ,你最初位于數組的 第一個下標 。數組中的每個元素代表你在該位置可以跳躍的最大長度。 判斷你是否能夠到達最后一個下標,如果可以,返回 true ;否則,返回 false 。 示例 1…

MT3037 新月軒就餐

思路: 此題每道菜的價錢相同,想最小化付的錢即求最小區間長度可以滿足“品嘗到所有名廚手藝”。 使用雙端隊列存儲元素,隊尾不斷向后遍歷:頭->尾 如果隊頭隊尾,則隊頭往右移一格,直到區間不同元素數m…

Docker部署MaxKB詳細步驟(window系統)

上面章節已經實現了ollama李現部署llama3,并實現了一些簡單的問答,但是問答的界面是在命令提示符中,交互很不友好,也不方便局域網其他用戶訪問,所以這節用docker部署MaxKB實現網頁訪問llama3,首先電腦上需要…

分布式系統的一致性與共識算法(四)

Etcd與Raft算法 Raft保證讀請求Linearizability的方法: 1.Leader把每次讀請求作為一條日志記錄,以日志復制的形式提交,并應用到狀態機后,讀取狀態機中的數據返回(一次RTT、一次磁盤寫)2.使用Leader Lease,保證整個集群只有一個L…

使用Flask-RESTful構建RESTful API

文章目錄 安裝Flask-RESTful導入模塊和類創建一個資源類運行應用測試API總結 Flask是一個輕量級的Python web開發框架,而Flask-RESTful是一個基于Flask的擴展,專門用于構建RESTful API。它提供了一些幫助類和方法,使構建API變得更加簡單和高效…

詳細分析Vue3中的reactive(附Demo)

目錄 1. 基本知識2. 用法3. Demo 1. 基本知識 reactive 是一個函數,用于將一個普通的 JavaScript 對象轉換為響應式對象 當對象的屬性發生變化時,Vue 會自動追蹤這些變化,并觸發相應的更新 Vue2沒有,而Vue3中有,為啥…

公司郵箱是什么?公司郵箱和個人郵箱有什么不同?

公司郵箱是企業用來收發郵件的專業版電子郵箱,不同于個人郵箱的簡單功能和有限的存儲空間,公司郵箱的功能更加豐富,能夠滿足企業的日常辦公和協作需求。本文將為您詳細講解公司郵箱和個人郵箱的區別,以供您選擇更適合自己的郵箱類…

嵌入式——C51版本Keil環境搭建

🎬 秋野醬:《個人主頁》 🔥 個人專欄:《Java專欄》《Python專欄》 ??心若有所向往,何懼道阻且長 文章目錄 目標搭建流程下載與安裝激活STC環境添加校驗是否導入STC環境 目標 ● 了解C51版本Keil開發環境的概念和用途 ● 掌握C51版本Keil環…

2024年NOC大賽創客智慧(西瓜創客)Python復賽編程真題模擬試卷包含答案

NOC復賽python模擬題 1.編寫一個程序,提示用戶輸人一個矩形的長度和寬度,并輸出其面積, 2.試計算在區間 1 到 n的所有整數中,數字x(0≤x≤9)共出現了多少次?例如在 1到11 中,即在 1,2,3.45,6.7,8.9,10,11 中,數字 1出現了 4 次.…