黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學(xué)習(xí)攻略 java抽象類與接口的區(qū)別是什么

java抽象類與接口的區(qū)別是什么

更新時間:2019-09-14 09:00:00 來源:動力節(jié)點 瀏覽3517次

本文主要講解了java中抽象類與接口的概念、使用及它們之間的區(qū)別。這部分知識是屬于java語言中核心的知識,是我們理解面向?qū)ο笏枷爰按a設(shè)計必要掌握的內(nèi)容。下面隨動力節(jié)點java培訓(xùn)機(jī)構(gòu)小編一起看看java抽象類與接口的區(qū)別是什么。

timg (1).jpg

  java抽象類的概念及案例

  假設(shè)有一個Employee和Student類,考慮一下對這兩個類的擴(kuò)展。比如每個員工或者學(xué)生都有姓名,因此可以將name放在較高層次的超類Person中。另外可以在Person中再添加一個方法getDeion,它可以返回對一個人的描述。因為不知道這個人是學(xué)生還是員工,所以該方法是抽象(abstract)的,也就是沒有方法體的。

  如下代碼:

public abstract class Person {
private String name;
public Person(String name){
this.name = name;
}
public String getName() {
return name;
}
public abstract void getDeion();
}

  抽象類要使用關(guān)鍵字:abstract

  抽象類中除了可以包含抽象方法外,也可以包含具體數(shù)據(jù)和具體方法。抽象方法充當(dāng)一個占位的角色。

  擴(kuò)展抽象類可以有兩種選擇:

  Ø 一種是在子類中定義部分抽象方法或不定義抽象方法,這樣就必須將子類也標(biāo)記為抽象類;

  Ø 另一種是定義全部的抽象方法,這樣子類就不是抽象的了。

  類即使不含抽象方法,也可以將類聲明為抽象的,不過這樣沒有什么意義。

  抽象類不能被實例化。也就是說,將一個類聲明為abstract,就不能創(chuàng)建這個類的對象了,但是可以創(chuàng)建一個具體子類的對象。需要注意的是,可以定義一個抽象類的對象變量,但是它只能引用非抽象子類的對象:Person p = new Student();//這里p是一個抽象類Person的變量,但他引用非抽象子類Student的實例。

public class Student extends Person{
public Student(String name) {
super(name);
}

@Override
public void getDeion() {
System.out.println("我是一個學(xué)生!");
}
}

java接口的定義

  接口(interface)技術(shù),主要是用來描述類具有什么功能,而并不給出每個功能的具體實現(xiàn)。一個類可以實現(xiàn)(implement)一個或多個接口。

  在java語言中,接口不是類,而是對一組需求的描述,實現(xiàn)接口的類要遵從接口描述的統(tǒng)一格式進(jìn)行定義。

案例

  Arrays類中的sort方法可以對對象數(shù)組進(jìn)行排序,但前提是:對象所屬的類必須實現(xiàn)了Comparable接口。

  下面是Comparable接口的代碼:

public interface Comparable {
public int compareTo(T o);
}

      任何實現(xiàn)Comparable接口的類都需要包含compareTo方法,并且這個方法的參數(shù)是一個泛型類型。

  返回一個整數(shù)值。

  說明:在調(diào)用x.compareTo(y)的時候,當(dāng)x小于y時,返回一個負(fù)數(shù);當(dāng)x等于y時,返回0;當(dāng)x大于y時,返回一個正數(shù)。

  接口中的所有方法自動地屬于public。因此,在接口中聲明方法時,也可以不必提供關(guān)鍵字public.

  Comparable接口只有一個方法,有些接口是可能包含多個方法的。

  在接口中還可以定義常量。

  接口絕不能含有實例域,也不能在接口中實現(xiàn)方法。(提供實例域和方法實現(xiàn)的任務(wù)應(yīng)該由實現(xiàn)接口的類來完成)

  假設(shè)希望使用Arrays類的sort方法對Employee對象數(shù)組進(jìn)行排序,Employee類就必須實現(xiàn)Comparable接口。

  實現(xiàn)一個接口,通常需要下面兩個步驟:

  1. 將類聲明為實現(xiàn)給定的接口(使用關(guān)鍵字implements)

  2. 對接口中的所有方法進(jìn)行定義

  下面是具體代碼:

package com.ck.entity;
public class Employee implements Comparable<Employee>{
private String name;
private double salary;
public Employee(String name, double salary) {
super();
this.name = name;
this.salary = salary;
}

public Employee() {
super();
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public double getSalary() {
return salary;
}

public void setSalary(double salary) {
this.salary = salary;
}
@Override
public String toString() {
return "Employee [name=" + name + ", salary=" + salary + "]";
}

@Override
public int compareTo(Employee o) {
return Double.compare(salary, o.getSalary());
}
}

@Test
public void test1(){
Employee[] emps = new Employee[3];
emps[0] = new Employee("王五",2000);
emps[1] = new Employee("張三", 5000);
emps[2] = new Employee("李四", 4000);
Arrays.sort(emps);
for (Employee employee : emps) {
System.out.println(employee.toString());
}
}

  java接口的特性

  1. 接口不是類,尤其不能使用new關(guān)鍵字實例化一個接口;

  2. 雖然不能實例化接口,但可以聲明接口的變量:Comparable x = new Employee();

  3. 如同使用instanceof檢查一個對象是否屬于某個特定類一樣,也可以使用instanceof檢查一個對象是否實現(xiàn)了某個特定的接口:if(anObject instanceof Comparable){…}

  4. 與可以建立類的繼承關(guān)系一樣,接口也可以擴(kuò)展:public interface A{} public interface B extends A{}

  5. 雖然接口中不能包含實例域或者靜態(tài)方法,但卻可以包含常量:public interface A{ double x=50; },與接口中的方法都自動的被設(shè)置為public一樣,接口中的域?qū)⒈蛔詣釉O(shè)為public static final

  6. 每個類只能擁有一個超類,但卻可以實現(xiàn)多個接口。public class A implement B,C{}

   java接口與抽象類的區(qū)別

  語法方面的區(qū)別

  1. 抽象類可以提供成員方法的實現(xiàn)細(xì)節(jié),而接口中只能存在public abstract方法;

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

  3. 接口中不能含有靜態(tài)代碼塊及靜態(tài)方法,而抽象類可以有靜態(tài)代碼塊和靜態(tài)方法;

  4. 一個類只能繼承一個抽象類,但卻可以實現(xiàn)多個接口

  設(shè)計方面的區(qū)別

  抽象類是對一種事物的抽象,即對類的抽象;而接口是對行為的抽象。抽象類是對整個類整體進(jìn)行抽象,包括屬性、行為;接口是對類局部(行為)進(jìn)行抽象。比如:飛機(jī)和鳥不是同類的事物,但是它們都有一個共性---會飛。那么在設(shè)計的時候,可以將飛機(jī)設(shè)計為一個類Plane,將鳥設(shè)計為一個類Bird,但是不能將飛行這個特性也設(shè)計為一個類,因為它只是一個行為,并不是對一類事物的抽象描述。此時,可以將飛行設(shè)計為一個接口Fly,包含方法fly(),然后Plane和Bird分別根據(jù)自己的需要實現(xiàn)Fly這個接口。然后至于有不同種類的飛機(jī),比如戰(zhàn)斗機(jī)、民用飛機(jī)等直接繼承Plane即可,對于鳥類也是類似的,不同種類的鳥直接繼承Bird類即可。(從這個例子中能看出,繼承是一個“是不是”的關(guān)系,而接口實現(xiàn)則是“有沒有、具備不具備”的關(guān)系)。

timg (2).jpg

以上就是動力節(jié)點java培訓(xùn)機(jī)構(gòu)小編介紹的“java抽象類與接口的區(qū)別是什么”的內(nèi)容,希望對大家有幫助,更多java最新資訊請繼續(xù)關(guān)注動力節(jié)點java培訓(xùn)機(jī)構(gòu)官網(wǎng),每天會有精彩內(nèi)容分與你。

相關(guān)免費視頻教程推薦-java入門教程下載:

java接口與抽象類的異同點http://www.ilovecolors.com.cn/xiazai/2571.html

java抽象類主人喂寵物:http://www.ilovecolors.com.cn/xiazai/2576.html

java抽象類定義動物類:http://www.ilovecolors.com.cn/xiazai/2577.html

提交申請后,顧問老師會電話與您溝通安排學(xué)習(xí)

免費課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 亚洲欧美中文字幕影音先锋 | 男女视频网站在线观看 | 伦理在线看| 经典三级四虎在线观看 | 寡妇一级a毛片免费播放 | 国产三级在线观看视频 | 欧美成人精品一区二三区在线观看 | 亚洲人成在线观看一区二区 | 日本高清一区 | 精品久久久久久国产 | 亚洲欧美日韩精品一区 | 天天视频色 | 天天插天天射天天操 | 69午夜影院| 日韩精品高清自在线 | 欧洲亚洲日本 | 一级毛片在播放免费 | 日日爽夜夜爽 | 可以免费看的毛片 | 欧美人xxx| 欧美狠狠干 | 成人国产精品久久久免费 | 日韩在线欧美 | 暴力调教抖s浪荡总裁受文 白洁性荡生活l六 | 欧美成人免费tv在线播放 | 中文字幕一区二区三区在线播放 | 欧美国产高清 | 成人免费视频视频在线不卡 | 一级毛毛片毛片毛片毛片在线看 | 亚洲宅男天堂a在线 | 伊人日日夜夜 | 视频二区在线 | 欧美va亚洲va国产综合 | 疯狂吮乳小说 | 麻豆久久婷婷国产综合五月 | 一色屋成人免费精品网站 | 又黄又猛又爽大片免费视频 | 日日干日日干 | 黄色激情视频在线观看 | 日韩在线高清 | 欧美成人剧情中文字幕 |