最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java中實(shí)現(xiàn)接口與繼承的區(qū)別及說(shuō)明

 更新時(shí)間:2024年03月25日 09:35:36   作者:feng之鋒  
這篇文章主要介紹了Java中實(shí)現(xiàn)接口與繼承的區(qū)別及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Java實(shí)現(xiàn)接口與繼承的區(qū)別

首先,先來(lái)了解一下什么是接口繼承。

接口一般是使用interface來(lái)定義的。

接口定義同類的定義類似,分為接口的聲明接口體,其中接口體常量定義方法定義兩部分組成。

定義接口的基本格式

如下:

[修飾符] interface 接口名 [extends 父接口名列表]{
[public] [static] [final] 常量;
[public] [abstract] 方法;
}
  • 修飾符:可選,用于指定接口的訪問(wèn)權(quán)限,可選值為public。如果省略則使用默認(rèn)的訪問(wèn)權(quán)限。
  • 接口名:必選參數(shù),用于指定接口的名稱,接口名必須是合法的Java標(biāo)識(shí)符。一般情況下,要求首字母大寫。
  • extends 父接口名列表:可選參數(shù),用于指定要定義的接口繼承于哪個(gè)父接口。當(dāng)使用extends關(guān)鍵字時(shí),父接口名為必選參數(shù)。
  • 方法:接口中的方法只有定義而沒(méi)有被實(shí)現(xiàn)。

例如,定義一個(gè)用于計(jì)算的接口,在該接口中定義了一個(gè)常量PI和兩個(gè)方法

具體代碼如下

public interface CalInterface 
{
    final float PI=3.14159f;//定義用于表示圓周率的常量PI
    float getArea(float r);//定義一個(gè)用于計(jì)算面積的方法getArea()
    float getCircumference(float r);//定義一個(gè)用于計(jì)算周長(zhǎng)的方法getCircumference()
}

此時(shí)需要注意的是:

與Java的類文件一樣的,接口文件的文件名必須與接口名相同。

繼承:繼承是Java面向?qū)ο缶幊碳夹g(shù)的一塊基石,因?yàn)樗试S創(chuàng)建分等級(jí)層次的類,它是一種子類繼承父類的特征和行為,使得子類對(duì)象(實(shí)例)具有父親的實(shí)例域和方法,或子類從父類繼承方法,使得子類具有父類相同的行為。

生活的繼承

兔子和羊?qū)儆谑巢輨?dòng)物類,獅子和豹屬于食肉動(dòng)物類。

食草動(dòng)物和食肉動(dòng)物又是屬于動(dòng)物類。

所以繼承需要符合的關(guān)系是:is-a,父類更通用,子類更具體。

雖然食草動(dòng)物和食肉動(dòng)物都是屬于動(dòng)物,但是兩者的屬性和行為上有差別,所以子類除了會(huì)具有父類的一般特性也會(huì)具有自身的特性。

繼承的特性

  • 子類擁有父類非private的屬性、方法;
  • 子類可以擁有自己的屬性和方法,即子類可以就自己的功能需求對(duì)父類進(jìn)行擴(kuò)展;
  • 子類可以用自己的方式實(shí)現(xiàn)父類的方法;
  • Java的繼承是單繼承,但是是可以多重繼承的,單繼承就是一個(gè)子類只能繼承一個(gè)父類,多重繼承就是,例如 A 類繼承 B 類,B 類繼承 C 類,所以按照關(guān)系就是 C 類是 B 類的父類,B 類是 A 類的父類,這是 Java 繼承區(qū)別于 C++ 繼承的一個(gè)特性;
  • 提高了類之間的耦合性,但是也會(huì)帶來(lái)一些問(wèn)題,如果耦合度高的話會(huì)造成代碼之間越緊密,代碼的獨(dú)立性就越差。
  • 在Java中,接口的實(shí)現(xiàn)和繼承的實(shí)現(xiàn)很類似的,寫法上是幾乎是一致的,就是關(guān)鍵字這一部分不一樣,即實(shí)現(xiàn)接口使用的關(guān)鍵字為implements,而繼承使用的關(guān)鍵字為extends。

代碼如下:

實(shí)現(xiàn)接口的代碼:

public class ButtonListener implements ActionListener {}

實(shí)現(xiàn)接口類型的寫法與解釋:

//事件處理類
//實(shí)現(xiàn)接口一定要實(shí)現(xiàn)(重寫)接口中所有的抽象方法
//實(shí)現(xiàn)接口(繼承):implements
//public class 子類 implements 接口,接口,,{}
//一個(gè)子類后面能夠?qū)崿F(xiàn)很多個(gè)接口的
//實(shí)現(xiàn)接口一定要實(shí)現(xiàn)(重寫)接口中所有的抽象方法
//ActionListener只是一個(gè)接口,也可以換成其他的接口的,所以下面必須是public void actionPerformed(ActionEvent e)的,抽象方法需與接口保持一致的

實(shí)現(xiàn)接口的代碼例子:

public class ButtonListener implements ActionListener { 
	//引用傳遞
	//定義文本框變量,用來(lái)保存?zhèn)鬟f過(guò)來(lái)的文本框?qū)ο?
	public JTextField jt;
	
	
	//動(dòng)作處理方法
	public void actionPerformed(ActionEvent e){
		//獲取文本框內(nèi)容
		String userName = jt.getText();
		
		//比較內(nèi)容是否一樣:equals
		//比較地址是否一樣:==
		if("123".equals(userName)){
			System.out.println("yes");
			JFrame jf = new JFrame();
			jf.setSize(400, 400);
			jf.setTitle("對(duì)話框");
			JLabel jl = new JLabel("賬號(hào)密碼驗(yàn)證成功");
			jf.add(jl);
			jf.setLocationRelativeTo(null);
			//設(shè)置可見(jiàn)
			jf.setVisible(true);
		}
		else{
			System.out.println("no");
			JFrame jf = new JFrame();
			jf.setSize(600, 600);
			jf.setTitle("對(duì)話框");
			JLabel jl = new JLabel("賬號(hào)密碼驗(yàn)證失敗",JLabel.CENTER);
			
			jf.add(jl);
			jf.setLocationRelativeTo(null);
			
		
			
			//設(shè)置可見(jiàn)
			jf.setVisible(true);
		}
	}
}

繼承的代碼:

public class UNStudent extends Student{}

繼承類型寫法與解釋

/**
 * 大學(xué)生類
 * 繼承:extends
 * public class 子類(派生類) extends 父類(基類) implements 接口,接口,,{}
 * 繼承中父類只有一個(gè),并不像接口一樣可以擁有很多個(gè)。
 * 子類會(huì)繼承父類中的屬性和方法,私有屬性和方法不能直接使用
 * @author liu
 */

繼承的代碼例子:

public class UNStudent extends Student{

	public void printName(){
		System.out.println("名字:"+getName());
	}
	//方法重寫(覆蓋)
	//1.有繼承關(guān)系的兩個(gè)類之間     2.返回值類型,方法名,參數(shù)類型(個(gè)數(shù),順序)完全一樣
	public void study(){
		System.out.println("子類重寫父類的學(xué)習(xí)方法!");
		}
}

綜上所述

實(shí)現(xiàn)接口與繼承的區(qū)別

1.不同的關(guān)鍵字,即實(shí)現(xiàn)接口(implements),繼承(extends);

2.在面向?qū)ο缶幊痰臅r(shí)候只能是單繼承,但是實(shí)現(xiàn)接口可以有多個(gè),簡(jiǎn)單點(diǎn)說(shuō),就是實(shí)現(xiàn)接口可以有好多個(gè),但是繼承的中父類只能只有一個(gè),因?yàn)楦赣H只有一個(gè),這說(shuō)明了繼承在Java中具有單根性,子類只能去繼承一個(gè)父類;

3.在接口中只能定義全局變量和抽象方法,而在繼承中可以定義屬性方法,變量,常量的等等…

4.當(dāng)某個(gè)接口被實(shí)現(xiàn)的時(shí)候,在類中一定要用接口中的抽象方法,而繼承中子類能隨意調(diào)用父類的屬性和方法,毫無(wú)壓力的;

5.當(dāng)你需要去調(diào)用接口時(shí),接口中的抽象方法是一定需要寫上去的,即使在抽象方法你并不需要去實(shí)現(xiàn)什么樣的功能,但這個(gè)步驟是一定不能少的;但是在繼承中并不是這樣的,當(dāng)子類需要實(shí)現(xiàn)的功能和父類中的實(shí)現(xiàn)功能毫無(wú)差別的時(shí)候,則父類中的實(shí)現(xiàn)方法可寫可不寫,但是當(dāng)你想要在你的子類中去實(shí)現(xiàn)某些特有的功能時(shí),這時(shí)候需要將父類中的實(shí)現(xiàn)方法去重寫,以實(shí)現(xiàn)在子類中所需要的特定功能。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Idea 搭建Spring源碼環(huán)境的超詳細(xì)教程

    Idea 搭建Spring源碼環(huán)境的超詳細(xì)教程

    這篇文章主要介紹了Idea 搭建Spring源碼環(huán)境,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10
  • Java面試題及答案集錦(基礎(chǔ)題122道,代碼題19道)

    Java面試題及答案集錦(基礎(chǔ)題122道,代碼題19道)

    本文是小編收集整理的關(guān)于java基礎(chǔ)面試題及答案集錦,基礎(chǔ)題目有122道,代碼題目有19道,非常不錯(cuò),值得收藏,需要的朋友參考下
    2017-01-01
  • Spring?Boot?Swagger3常用注解詳解與實(shí)戰(zhàn)指南

    Spring?Boot?Swagger3常用注解詳解與實(shí)戰(zhàn)指南

    Swagger是一個(gè)用于設(shè)計(jì)、構(gòu)建、文檔化和使用RESTful?Web服務(wù)的開(kāi)源工具,Swagger3是Swagger的最新版本,它提供了許多新功能和改進(jìn),這篇文章主要介紹了Spring?Boot?Swagger3常用注解詳解與實(shí)戰(zhàn)指南的相關(guān)資料,需要的朋友可以參考下
    2025-10-10
  • Java常見(jiàn)踩坑記錄之異常處理

    Java常見(jiàn)踩坑記錄之異常處理

    程序運(yùn)行時(shí)發(fā)生的不被期望的事件,它阻止了程序按照程序員的預(yù)期正常執(zhí)行,這就是異常,下面這篇文章主要給大家介紹了關(guān)于Java常見(jiàn)踩坑記錄之異常處理的相關(guān)資料,需要的朋友可以參考下
    2022-01-01
  • MyBatis入門初體驗(yàn)之使用大全(2)

    MyBatis入門初體驗(yàn)之使用大全(2)

    這篇文章主要介紹了MyBatis入門初體驗(yàn)之使用大全(2)的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-07-07
  • IDEA接入Deepseek的圖文教程

    IDEA接入Deepseek的圖文教程

    在本篇文章中,我們將詳細(xì)介紹如何在 JetBrains IDEA 中使用 Continue 插件接入 DeepSeek,讓你的 AI 編程助手更智能,提高開(kāi)發(fā)效率,感興趣的小伙伴跟著小編一起來(lái)看看吧
    2025-03-03
  • Java數(shù)組實(shí)例練習(xí)題整理

    Java數(shù)組實(shí)例練習(xí)題整理

    在本篇文章中小編給各位分享的是關(guān)于Java數(shù)組實(shí)例練習(xí)題以及相關(guān)代碼整理,有需要的朋友們跟著學(xué)習(xí)下。
    2019-07-07
  • 基于logback 實(shí)現(xiàn)springboot超級(jí)詳細(xì)的日志配置

    基于logback 實(shí)現(xiàn)springboot超級(jí)詳細(xì)的日志配置

    java web 下有好幾種日志框架,比如:logback,log4j,log4j2(slj4f 并不是一種日志框架,它相當(dāng)于定義了規(guī)范,實(shí)現(xiàn)了這個(gè)規(guī)范的日志框架就能夠用 slj4f 調(diào)用)。這篇文章主要介紹了基于logback springboot超級(jí)詳細(xì)的日志配置,需要的朋友可以參考下
    2019-06-06
  • Java中Hutool克隆功能的使用

    Java中Hutool克隆功能的使用

    本文主要介紹了Java中Hutool克隆功能的使用,cn.hutool.core.clone.Cloneable?是Hutool中提供的一個(gè)接口,用于支持對(duì)象的深度克隆操作,下面就一起來(lái)介紹一下
    2024-04-04
  • 解決SpringBoot ClassPathResource的大坑(FileNotFoundException)

    解決SpringBoot ClassPathResource的大坑(FileNotFoundException)

    這篇文章主要介紹了解決SpringBoot ClassPathResource的大坑(FileNotFoundException),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06

最新評(píng)論

凤翔县| 东乡族自治县| 晋州市| 阜南县| 太仆寺旗| 广德县| 旅游| 十堰市| 广元市| 鄂州市| 鹤岗市| 华亭县| 太白县| 沽源县| 同江市| 达孜县| 铅山县| 绥棱县| 黑龙江省| 潼关县| 卢龙县| 理塘县| 黄山市| 湖南省| 琼海市| 岗巴县| 九龙县| 徐汇区| 红原县| 交口县| 乐陵市| 寻乌县| 普安县| 张北县| 长葛市| 定兴县| 边坝县| 正蓝旗| 嵊泗县| 洪雅县| 绵竹市|