java抽象類別和接口
java
介面
一、抽象類別
我們知道,物件是透過類別來產生的,但是並非所有的類別都可以描述特定的物件。
如果一個類別中不包含足夠的資訊來描述特定的對象,就成為了抽象類別。抽象類別是對一類有著相同特徵,但細節上卻有著不同表現的物件的抽象。例如,鳥類都會叫,但是不同的鳥叫法一定是不同的,可以抽像出「叫」這個概念。
定義下面一個鳥類:
public abstract class Bird { private String color; public String getColor() { return color; } public void setColor(String color) { this.color = color; } public Bird(){ } public abstract void sing();//鸣叫 } //喜鹊 class Magpie extends Bird{ public void sing() { System.out.println("I can sing in a whisper. "); } }
登入後複製
抽象類別特徵:
(1)抽象類別用abstract關鍵字修飾
(2)抽象類別中的抽象方法用abstract進行修飾,沒有方法(
(2)抽象類別中的抽象方法用abstract實現具體方法(具體方法)。 (3)抽象類別可以包含非抽象方法(4)抽象類別可以不包含抽象方法(設計成抽象類別就沒什麼意義了吧。。。),但包含抽象方法的類別一定是抽象類別(5)抽象類別本質也是類,只能單繼承(6)抽象類別不能實例化,不能new。我們前面說它不描述特定的對象,肯定也不能實例化了(7)抽象類別可以有實例變數和建構方法 二、介面 介面是一組方法特徵的集合,是介面 介面是一組方法特徵的集合,是介面 介面是一組方法特徵的集合,是介面 介面是一組方法特徵的集合,是介面 介面是一組方法特徵的集合,是介面 契約,規定了你可以做什麼。軟體設計過程中要依賴抽象,而非具體實作。 像我們電腦上的usb接口,無論你是硬碟、u盤、還是手機,只要你實現了usb規定的接口,便能夠聯通電腦。 上面抽象類別的例子中,我想加入一個「飛」的功能,考慮到並非所有的鳥都會飛,例如:企鵝,鴕鳥,鴨子等等,該怎麼辦呢? 修改抽象類別肯定是不合適的:1.違反開閉原則,2:會使得所有的子類別都繼承到「飛」這一功能,我們會看到滿天的鴨子在飛了^_^ 。 我們可以定義下面一個介面:
public interface IFly { void fly(); }
登入後複製
class Magpie extends Bird implements IFly { public void sing() { System.out.println("I can sing in a whisper. "); } public void fly(){ System.out.println("我会飞了!"); } }
登入後複製
(2)關鍵字:interface
。
(4)介面中的方法預設都是public abstract的,實作類別中必須使用public修飾。
(5)介面中的所有方法都必須在實作類別(抽象類別除外)中實作。
(6)介面中的變數預設為public static final的。
(7)一個類別可以實現多個介面。
三、應用場景
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前
By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
擊敗分裂小說需要多長時間?
3 週前
By DDD
R.E.P.O.保存文件位置:在哪里以及如何保護它?
3 週前
By DDD

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)