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