-
當(dāng)前位置:首頁 > 創(chuàng)意學(xué)院 > 技術(shù) > 專題列表 > 正文
靜態(tài)類和接口的區(qū)別(靜態(tài)類和接口的區(qū)別在哪)
大家好!今天讓創(chuàng)意嶺的小編來大家介紹下關(guān)于靜態(tài)類和接口的區(qū)別的問題,以下是小編對(duì)此問題的歸納整理,讓我們一起來看看吧。
開始之前先推薦一個(gè)非常厲害的Ai人工智能工具,一鍵生成原創(chuàng)文章、方案、文案、工作計(jì)劃、工作報(bào)告、論文、代碼、作文、做題和對(duì)話答疑等等
只需要輸入關(guān)鍵詞,就能返回你想要的內(nèi)容,越精準(zhǔn),寫出的就越詳細(xì),有微信小程序端、在線網(wǎng)頁版、PC客戶端
官網(wǎng):https://ai.de1919.com
本文目錄:
一、Java類的基本組成和使用
Java類的基本組成:java由一系列的接口和類組成,所有類的父類是:object。對(duì)象的生成:使用new關(guān)鍵字產(chǎn)生對(duì)象,該對(duì)象類中構(gòu)造方法就是用來產(chǎn)生對(duì)象的。對(duì)象由一系列的屬性和行為構(gòu)成。使用和刪除:對(duì)象構(gòu)成之后,就可以使用對(duì)象點(diǎn)方法、屬性進(jìn)行操作,問刪除,如果對(duì)象失去了引用的指向,會(huì)自動(dòng)被GC(垃圾回收機(jī)制)回收。接口與包:接口(行為的抽象),實(shí)現(xiàn)接口,必須實(shí)現(xiàn)接口的方法,哪怕是空實(shí)現(xiàn),目前我見過唯一一個(gè)沒有實(shí)現(xiàn)的類就是:HttpSrvlet,其中的service實(shí)現(xiàn)的是抽象方法,接口目的有3點(diǎn):1、因?yàn)樵趈ava不像C++,java是單繼承,所以為了實(shí)現(xiàn)多繼承,提出了接口的概念。2、為了規(guī)范,比如財(cái)付通、支付寶等第3方支付工具,外面的人怎么用它呢?他們僅僅是提供了接口給外面的,不管你怎么操作,你必須按照我提供給你的接口去實(shí)現(xiàn)。3、多態(tài)(Oriented Object的思想),程序的健壯性(開閉原則),方便維護(hù)和擴(kuò)展,動(dòng)態(tài)綁定可以實(shí)現(xiàn)接口變量指向?qū)崿F(xiàn)類。包的概念就是為了方便管理。oracle中的包的概念也是如此常用的類和接口就不說了,自己去查查API,太多了
二、靜態(tài)路由下一跳和出接口的區(qū)別?
在以太網(wǎng)中,兩個(gè)接口之間的通信需要使用MAC地址,根據(jù)MAC地址,將數(shù)據(jù)封裝成數(shù)據(jù)幀后傳送到網(wǎng)絡(luò),進(jìn)而通過物理線路傳送給對(duì)方。而獲得對(duì)方的MAC地址,是通過ARP的過程完成的。
當(dāng)靜態(tài)路由中使用出接口時(shí),路由器會(huì)認(rèn)為目標(biāo)網(wǎng)絡(luò)和接口處在“直連網(wǎng)絡(luò)”中。R1(config)#iproute23.23.23.0255.255.255.252f0/0
查看:這時(shí)R1認(rèn)為23.23.23.0/30這個(gè)網(wǎng)段是和自己直連的,
在以太網(wǎng)直連網(wǎng)絡(luò)中設(shè)備間的通信是通過ARP廣播來獲取到到達(dá)目標(biāo)主機(jī)的MAC地址的。即當(dāng)R1要訪問23.23.23.3這個(gè)IP地址時(shí),R1認(rèn)為目標(biāo)網(wǎng)絡(luò)是自己的直連網(wǎng)絡(luò)(這時(shí)候還是屬于靜態(tài)路由),于是R1就要在F0/0口向網(wǎng)絡(luò)發(fā)出ARP請(qǐng)求廣播,來尋找23.23.23.3所對(duì)應(yīng)的MAC地址。
這時(shí),如果R2啟用了ARP代理,那么R2將R3應(yīng)答此ARP請(qǐng)求,即R2告訴R1:23.23.23.3所對(duì)應(yīng)的MAC地址是R2的F0/0接口的MAC。如果R2的ARP代理功能關(guān)閉,那么R1將不能ping通23.23.23.3。假設(shè)R3后面接了些的PC機(jī),當(dāng)R1要訪問這些PC機(jī)時(shí),都會(huì)產(chǎn)生一條該P(yáng)C機(jī)和MAC地址對(duì)應(yīng)的ARP條目緩存,如果PC機(jī)的數(shù)量很大,該緩存也很大,有可能導(dǎo)致R1耗盡內(nèi)存來維護(hù)。
在靜態(tài)路由中使用下一跳,路由表中顯示的是下一跳的IP。
R1(config)#iproute23.23.23.0255.255.255.25212.12.12.2
查看:
這時(shí)去往23.23.23.0/30的網(wǎng)段只會(huì)維護(hù)一條ARP緩存,即12.12.12.2所對(duì)應(yīng)的是R2的F0/0接口地址。即使R3后面接了多臺(tái)主機(jī),也只需要維護(hù)這么一條ARP緩存記錄。
如果在點(diǎn)到點(diǎn)網(wǎng)絡(luò)環(huán)境下,無論是指定下一跳地址還是出接口,其效果都是一樣的。使用如HDLC和PPP之類協(xié)議來進(jìn)行二層的封裝,不需要進(jìn)行ARP的解析。
結(jié)論:
在配置靜態(tài)路由時(shí),既可指定出接口,也可指定位下一跳,到底采用哪種方法,需要根據(jù)實(shí)際情況而定。
在點(diǎn)到點(diǎn)網(wǎng)絡(luò)環(huán)境下,無論是指定下一跳地址還是出接口,其效果都是一樣的。
但是在廣播網(wǎng)絡(luò)環(huán)境下,指定下一跳地址和指定出接口將會(huì)達(dá)到不同的效果。如果指定為出接口的話,那么不管數(shù)據(jù)包的目標(biāo)地址是否有效,每次當(dāng)數(shù)據(jù)包到達(dá)時(shí)都會(huì)觸發(fā)一個(gè)ARP請(qǐng)求,又因?yàn)锳RP代理功能在IOS環(huán)境下默認(rèn)是打開的,這就意味著路由器需要配備大量的ARP高速緩存。而如果是指定為下一跳地址的話,僅當(dāng)?shù)谝粋€(gè)去往目標(biāo)網(wǎng)絡(luò)的數(shù)據(jù)包到達(dá)時(shí),才會(huì)觸發(fā)ARP請(qǐng)求。
三、C#.NET里面抽象類和接口有什么區(qū)別?
1抽象類
(1) 抽象方法只作聲明,而不包含實(shí)現(xiàn),可以看成是沒有實(shí)現(xiàn)體的虛方法
(2) 抽象類不能被實(shí)例化
(3) 抽象類可以但不是必須有抽象屬性和抽象方法,但是一旦有了抽象方法,就一定要把這個(gè)類聲明為抽象類
(4) 具體派生類必須覆蓋基類的抽象方法
(5) 抽象派生類可以覆蓋基類的抽象方法,也可以不覆蓋。如果不覆蓋,則其具體派生類必須覆蓋它們。如:
using System;
public abstract class A //抽象類A
{
private int num=0;
public int Num //抽象類包含屬性
{
get
{
return num;
}
set
{
num = value;
}
}
public virtual int getNum() //抽象類包含虛方法
{
return num;
}
public void setNum(int n) // //抽象類包含普通方法
{
this.num = n;
}
public abstract void E(); //類A中的抽象方法E
}
public abstract class B : A //由于類B繼承了類A中的抽象方法E,所以類B也變成了抽象類
{
}
public class C : B
{
public override void E() //重寫從類A繼承的抽象方法。如果類B自己還定義了抽象方法,也必須重寫
{
//throw new Exception("The method or operation is not implemented.");
}
}
public class Test
{
static void Main()
{
C c = new C();
c.E();
}
}
二、接 口
(1) 接口不能被實(shí)例化
(2) 接口只能包含方法聲明
(3) 接口的成員包括方法、屬性、索引器、事件
(4) 接口中不能包含常量、字段(域)、構(gòu)造函數(shù)、析構(gòu)函數(shù)、靜態(tài)成員。如:
public delegate void EventHandler(object sender, Event e);
public interface ITest
{
//int x = 0;
int A
{
get;
set;
}
void Test();
event EventHandler Event;
int this[int index]
{
get;
set;
}
}
(5) 接口中的所有成員默認(rèn)為public,因此接口中不能有private修飾符
(6) 派生類必須實(shí)現(xiàn)接口的所有成員
(7) 一個(gè)類可以直接實(shí)現(xiàn)多個(gè)接口,接口之間用逗號(hào)隔開
(8) 一個(gè)接口可以有多個(gè)父接口,實(shí)現(xiàn)該接口的類必須實(shí)現(xiàn)所有父接口中的所有成員
三、抽象類和接口
相同點(diǎn):
(1) 都可以被繼承
(2) 都不能被實(shí)例化
(3) 都可以包含方法聲明
(4) 派生類必須實(shí)現(xiàn)未實(shí)現(xiàn)的方法
區(qū) 別:
(1) 抽象基類可以定義字段、屬性、方法實(shí)現(xiàn)。接口只能定義屬性、索引器、事件、和方法聲明,不能包含字段。
(2) 抽象類是一個(gè)不完整的類,需要進(jìn)一步細(xì)化,而接口是一個(gè)行為規(guī)范。微軟的自定義接口總是后帶able字段,證明其是表述一類“我能做。。?!?/p>
(3) 接口可以被多重實(shí)現(xiàn),抽象類只能被單一繼承
(4) 抽象類更多的是定義在一系列緊密相關(guān)的類間,而接口大多數(shù)是關(guān)系疏松但都實(shí)現(xiàn)某一功能的類中
(5) 抽象類是從一系列相關(guān)對(duì)象中抽象出來的概念, 因此反映的是事物的內(nèi)部共性;接口是為了滿足外部調(diào)用而定義的一個(gè)功能約定, 因此反映的是事物的外部特性
(6) 接口基本上不具備繼承的任何具體特點(diǎn),它僅僅承諾了能夠調(diào)用的方法
(7) 接口可以用于支持回調(diào),而繼承并不具備這個(gè)特點(diǎn)
(8) 抽象類實(shí)現(xiàn)的具體方法默認(rèn)為虛的,但實(shí)現(xiàn)接口的類中的接口方法卻默認(rèn)為非虛的,當(dāng)然您也可以聲明為虛的
(9) 如果抽象類實(shí)現(xiàn)接口,則可以把接口中方法映射到抽象類中作為抽象方法而不必實(shí)現(xiàn),而在抽象類的子類中實(shí)現(xiàn)接口中方法
四、關(guān)于java中接口定義常量和類定義常量的區(qū)別
接口常量修飾格式固定的,public final 必不可少,你不寫,他也自動(dòng)補(bǔ)全!
類的常量沒這個(gè)特殊要求,看情況定;
接口常量只有子類實(shí)現(xiàn)后才可以使用!
類常量,創(chuàng)建實(shí)例就可以用,也或者靜態(tài)調(diào)用!
以上就是關(guān)于靜態(tài)類和接口的區(qū)別相關(guān)問題的回答。希望能幫到你,如有更多相關(guān)問題,您也可以聯(lián)系我們的客服進(jìn)行咨詢,客服也會(huì)為您講解更多精彩的知識(shí)和內(nèi)容。
推薦閱讀:
收款碼是靜態(tài)還是動(dòng)態(tài)(收款碼是靜態(tài)還是動(dòng)態(tài)碼)
數(shù)媒靜態(tài)設(shè)計(jì)獲獎(jiǎng)作品(數(shù)媒靜態(tài)設(shè)計(jì)獲獎(jiǎng)作品圖片)
靜態(tài)ip能提高網(wǎng)速嗎(靜態(tài)ip能提高網(wǎng)速嗎)
網(wǎng)頁有廣告怎么去掉(手機(jī)瀏覽器怎么去廣告)
景觀設(shè)計(jì)適合女生嗎(景觀設(shè)計(jì)適合女生嗎)