国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > Java > 正文

淺談Java抽象類和接口的個(gè)人理解

2024-07-13 10:15:20
字體:
供稿:網(wǎng)友

今天來說一波自己對(duì)Java中抽象類和接口的理解,含參考內(nèi)容:

一、抽象類

1、定義:

public abstract class 類名{}

Java語言中所有的對(duì)象都是用類來進(jìn)行描述,但是并不是所有的類都是用來描述對(duì)象的。我所理解的抽象類其實(shí)就是對(duì)同一類事物公共部分的高度提取,這個(gè)公共部分包括屬性和行為。比如牛、羊、豬它們的公共屬性是都有毛,公共行為是都哺乳,所以我們可以把公共部分抽象成一個(gè)哺乳類,含有屬性毛和行為哺乳,當(dāng)牛、羊、豬繼承了哺乳類后也就有了哺乳的功能,至于怎么完成這個(gè)功能就需要自己去實(shí)現(xiàn)了。

2、特點(diǎn)

(1)被Abstract關(guān)鍵字修飾的類是抽象類;

(2)含有抽象方法的類一定是抽象類,但是抽象類不一定含有抽象方法;且抽象方法必須是public或protected,否則不能被子類繼承。默認(rèn)為public。

(3)抽象方法中不能有實(shí)現(xiàn),否則編譯報(bào)錯(cuò);

(4)抽象類中可以定義自己的成員變量和成員方法;

(5)子類繼承抽象類時(shí),必須實(shí)現(xiàn)抽象類中的所有抽象方法,否則該子類也要被定義為抽象類;

(6)抽象類不能被實(shí)例化。

3、驗(yàn)證以上規(guī)定是否確實(shí)如其所述

這是我在word中編輯的一張驗(yàn)證表,把它截成圖片放在這里:

java抽象類和接口,java,抽象類,接口,java接口與抽象類,java中的抽象類和接口

從上圖的驗(yàn)證結(jié)果來看,那些理論都是正確的

二、接口

1、定義:

public interface 接口名{}

接口是用來提供方法的。按我的理解,它是對(duì)多個(gè)類公共行為的高度提取,比如所有的動(dòng)物它們的公共行為是吃和睡,那么我們就可以將這兩個(gè)行為提取出來封裝在一個(gè)接口中,當(dāng)某個(gè)動(dòng)物需要執(zhí)行這個(gè)行為的時(shí)候只要調(diào)用該接口,然后在自己的類里面完成具體實(shí)現(xiàn)就行。這樣理解好像跟抽象類沒什么區(qū)別,那再看下面的這個(gè)例子。如果把這兩個(gè)行為放在抽象類中,但是該抽象類中還有一個(gè)爬的行為,此時(shí)當(dāng)一種爬行動(dòng)物,比如蛇,當(dāng)它繼承這個(gè)類的時(shí)候,會(huì)實(shí)現(xiàn)吃、睡、爬行這三個(gè)方法,于是它便有了吃、睡、爬的功能;但是如果一個(gè)飛行類的動(dòng)物如鳥,當(dāng)它繼承了這個(gè)方法的時(shí)候,同樣的也有了吃、睡、爬的功能,很明顯,爬不是它需要的功能,這就有點(diǎn)詞不達(dá)意了,但是當(dāng)他們繼承了只有吃、睡的接口,就有了吃、睡的基本功能,至于爬和飛,可以抽象出來放在抽象類中,按需繼承,按需實(shí)現(xiàn)自己需要的功能就OK了。

2、特點(diǎn):

(1)接口中可以有自己的成員變量,但會(huì)被隱式地指定為public staic final,而且也只能是public staic final的,接口中所有的方法都是抽象方法,都會(huì)被隱式地指定為public abstract的。

(2)接口中只定義抽象方法,沒有具體的實(shí)現(xiàn);

(3)實(shí)現(xiàn)接口的類必須實(shí)現(xiàn)接口中定義的所有方法;

3、驗(yàn)證以上理論是否正確

java抽象類和接口,java,抽象類,接口,java接口與抽象類,java中的抽象類和接口

同樣,驗(yàn)證出上面的理論都是對(duì)的!

三、抽象類和接口的區(qū)別:

1、抽象類中可以有自己的成員方法及它們的具體實(shí)現(xiàn);接口中只能含有抽象方法;

2、抽象類中可以含有各種類型的成員變量;接口中的成員變量只能是public static final的;

3、一個(gè)類只能繼承一個(gè)抽象類,但可以實(shí)現(xiàn)多個(gè)接口;

4、抽象類中可以含有靜態(tài)代碼塊和靜態(tài)方法;接口中不能定義靜態(tài)代碼塊和靜態(tài)方法;

驗(yàn)證一個(gè)類只能繼承一個(gè)抽象類,但能實(shí)現(xiàn)多個(gè)接口

首先,定義兩個(gè)抽象類:一個(gè)Mummals哺乳類,一個(gè)Crawler爬行類

/** * @createtime 2017年3月17日 上午10:33:27 * @description 哺乳類  */public abstract class Mammals {	public String foods;	public abstract void nurse();	public void eat(String food){		this.foods = food;		System.out.println("吃"+foods);	}}
/** *  * @createtime 2017年3月17日 上午11:23:09 * @description 定義一個(gè)抽象類--爬行類 */public abstract class Crawler {	public abstract void crawl();}

其次,定義兩個(gè)接口:一個(gè)是BaseAction基礎(chǔ)接口;一個(gè)是SpecialAction特殊接口

/** *  * @createtime 2017年3月17日 上午11:03:42 * @description 定義一個(gè)名為基本行為的接口 */public interface BaseAction {	public String name = "";	public void eat();	public void sleep();}
/** * @createtime 2017年3月17日 上午11:24:56 * @description 定義一個(gè)接口用來實(shí)現(xiàn)特殊行為 */public interface SpecialAction {    public void study();}

然后,定義一個(gè)基礎(chǔ)類People,繼承Mummals類,實(shí)現(xiàn)BaseAction接口和SpecialAction接口

/** * @createtime 2017年3月17日 上午11:25:48 * @description 定義一個(gè)普通的類--人類,繼承哺乳類,實(shí)現(xiàn)基礎(chǔ)接口和特殊接口 */public class People extends Mammals implements BaseAction,SpecialAction{	@Override	  public void study() {		// TODO Auto-generated method stub	}	@Override	  public void eat() {		// TODO Auto-generated method stub	}	@Override	  public void sleep() {		// TODO Auto-generated method stub	}	@Override	  public void nurse() {		// TODO Auto-generated method stub	}}

可以看出,一個(gè)子類是可以實(shí)現(xiàn)多個(gè)接口的

最后,讓基礎(chǔ)類People,同時(shí)繼承Mummals類和Crawler類

/** * @createtime 2017年3月17日 上午11:25:48 * @description 定義一個(gè)普通的類--人類,繼承哺乳類,實(shí)現(xiàn)基礎(chǔ)接口和特殊接口 */public class People extends Mammals,Crawler{	@Override	  public void nurse() {		// TODO Auto-generated method stub	}}

總結(jié)

以上就是本文關(guān)于淺談Java抽象類和接口的個(gè)人理解的全部內(nèi)容,希望對(duì)大家有所幫助。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到JAVA教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 高安市| 沙田区| 东城区| 三都| 平和县| 社会| 东平县| 赣榆县| 沙河市| 舒城县| 马山县| 隆子县| 江孜县| 甘南县| 荣成市| 喀什市| 那坡县| 宁津县| 娄底市| 洪洞县| 政和县| 临夏县| 招远市| 永昌县| 肇东市| 广宗县| 甘肃省| 祥云县| 禄丰县| 团风县| 镇巴县| 德保县| 安达市| 镇坪县| 界首市| 门头沟区| 苏州市| 长白| 西城区| 神池县| 盖州市|