深入浅出谈接口(interface)和类间继承(extends)
生活随笔
收集整理的這篇文章主要介紹了
深入浅出谈接口(interface)和类间继承(extends)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1. 案例:通信網(wǎng)絡(luò)模型
1.網(wǎng)絡(luò)--對(duì)應(yīng)接口interface(規(guī)范) 2.手機(jī)--實(shí)現(xiàn)類備注:每一代手機(jī)實(shí)現(xiàn)一種技術(shù)接口(是否繼承上一代技術(shù)?)每一次技術(shù)升級(jí)(網(wǎng)絡(luò)【interface】升級(jí),是否繼承?)2. 代碼實(shí)現(xiàn)
2.1 第一代:網(wǎng)絡(luò)技術(shù)GRPS(接口)
實(shí)現(xiàn)類手機(jī):M1,H1 - - -沒有繼承問題接口GRPS
public interface IGPRS {void tel();//打電話void sms();//發(fā)短信 }手機(jī)M1
public class M1 implements IGPRS {@Overridepublic void tel() {// TODO Auto-generated method stubSystem.out.println("M1 tel");}@Overridepublic void sms() {// TODO Auto-generated method stubSystem.out.println("M1 sms");}}手機(jī)H1
public class H1 implements IGPRS{@Overridepublic void tel() {// TODO Auto-generated method stubSystem.out.println("H1 tel");}@Overridepublic void sms() {// TODO Auto-generated method stubSystem.out.println("H1 sms");}}2.2 第二代:網(wǎng)絡(luò)技術(shù)3G(接口)
實(shí)現(xiàn)類手機(jī):M2,H2 - - 存在繼承問題1. M2沒有繼承上一代M1的打電話和發(fā)短信技術(shù),都是全部研發(fā)(浪費(fèi)資源,增加成本,代碼體現(xiàn)增加了重復(fù)代碼)2. H2繼承了上一代H1的打電話和發(fā)短信技術(shù),然后增加了新技術(shù)3G功能(節(jié)省成本,資源得到充分利用,代碼體現(xiàn)減少了重復(fù)代碼)接口3G - - 繼承了IGPRS接口
減少冗余代碼
public interface I3G extends IGPRS {void netWork();//使用3G上網(wǎng) }手機(jī)M2 - - 沒有繼承
代碼重復(fù)(M2的打電話和發(fā)短信的內(nèi)核技術(shù)全新研發(fā)的,沒有M1的痕跡)
//沒有繼承M1的技術(shù),因此所有技術(shù)都需要自己研發(fā) public class M2 implements I3G {@Overridepublic void tel() {// TODO Auto-generated method stubSystem.out.println("M2 tel");}@Overridepublic void sms() {// TODO Auto-generated method stubSystem.out.println("M2 sms");}@Overridepublic void netWork() {// TODO Auto-generated method stubSystem.out.println("M2 3G");}}手機(jī)H2 - - 繼承了H1
減少冗余代碼(H2的打電話和發(fā)短信的內(nèi)核技術(shù)還是H1 的)
//繼承了H1的技術(shù) public class H2 extends H1 implements I3G {@Overridepublic void netWork() {// TODO Auto-generated method stubSystem.out.println("H2 3G");}}2.3 第三代:網(wǎng)絡(luò)技術(shù)4G(接口)
實(shí)現(xiàn)類手機(jī):M3,H3 - - 存在繼承問題M3,H3均繼承上一代手機(jī)技術(shù)。接口4G - - 繼承3G
public interface I4G extends I3G {void video();//使用4G看視頻 }手機(jī)M3 - - 繼承M2
public class M3 extends M2 implements I4G {@Overridepublic void video() {// TODO Auto-generated method stubSystem.out.println("M3 play video");}}手機(jī)H3 - - 繼承H2
public class H3 extends H2 implements I4G {@Overridepublic void video() {// TODO Auto-generated method stubSystem.out.println("H3 play video");}}結(jié)果測(cè)試
public class Person {public static void use(IGPRS phone){phone.tel();phone.sms();}public static void use(I3G phone){phone.tel();phone.sms();phone.netWork();}public static void use(I4G phone){phone.tel();phone.sms();phone.netWork();phone.video();}public static void main(String[] args) {System.out.println("---------------第一代網(wǎng)絡(luò)技術(shù)GPRS------------------");Person.use(new H1());Person.use(new M1());System.out.println("---------------第二代網(wǎng)絡(luò)技術(shù)3G------------------");Person.use(new H2());System.out.println();Person.use(new M2());System.out.println("---------------第三代網(wǎng)絡(luò)技術(shù)4G------------------");Person.use(new H3());System.out.println();Person.use(new M3());} }運(yùn)行結(jié)果:
總結(jié)
以上是生活随笔為你收集整理的深入浅出谈接口(interface)和类间继承(extends)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 连接池Connection Pool 单
- 下一篇: Hibernate hql 查询指定字段