自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

秒懂抽象類和接口到底是什么垃圾

新聞
這幾天給別人講JavaSE基礎(chǔ),又把面向?qū)ο罂戳艘槐?,講的時(shí)候發(fā)現(xiàn)一個問題,就是當(dāng)時(shí)講抽象類和接口的時(shí)候說接口也是抽象類,是個特殊的抽象類,當(dāng)時(shí)聽的時(shí)候別人確實(shí)能聽懂,因?yàn)榇_實(shí)沒多少東西,但是真正用的時(shí)候總會猶豫,到底什么時(shí)候該用抽象類什么時(shí)候用接口呢?

  前言

這幾天給別人講JavaSE基礎(chǔ),又把面向?qū)ο罂戳艘槐?,講的時(shí)候發(fā)現(xiàn)一個問題,就是當(dāng)時(shí)講抽象類和接口的時(shí)候說接口也是抽象類,是個特殊的抽象類,當(dāng)時(shí)聽的時(shí)候別人確實(shí)能聽懂,因?yàn)榇_實(shí)沒多少東西,但是真正用的時(shí)候總會猶豫,到底什么時(shí)候該用抽象類什么時(shí)候用接口呢?

  如何區(qū)分使用抽象類和接口

大家在比較抽象類和接口的區(qū)別時(shí),一定要強(qiáng)調(diào)抽象類描述的是事物的本質(zhì),而接口描述的是事物的功能。比如:保溫杯是水杯,所以水杯應(yīng)該設(shè)計(jì)為抽象類,保溫杯有保溫的功能,所以保溫應(yīng)該設(shè)計(jì)為接口。

可理解為:

class 保溫杯 extends 水杯 implements 保溫

用實(shí)例說話 

  1. package 
  2.  zmldemo 
  3. //水杯抽象類 
  4. public 
  5.   
  6. abstract 
  7.   
  8. class 
  9.   
  10. Cup 
  11.   
  12.       
  13. String 
  14.  name 
  15. //水杯名稱 
  16.       
  17. String 
  18.  color 
  19. //水杯顏色 
  20.  
  21.      
  22. public 
  23.   
  24. Cup 
  25. () 
  26.   
  27.      
  28.  
  29.      
  30. public 
  31.   
  32. Cup 
  33. String 
  34.  name 
  35.   
  36. String 
  37.  color 
  38.   
  39.          
  40. this 
  41. name  
  42.  name 
  43.          
  44. this 
  45. color  
  46.  color 
  47.      
  48.      
  49. //水杯使用說明方法 
  50.      
  51. public 
  52.   
  53. abstract 
  54.   
  55. void 
  56.  useCup 
  57. (); 

 

  1. package 
  2.  zmldemo 
  3. //保溫接口 
  4. public 
  5.   
  6. interface 
  7.   
  8. BaoWen 
  9.   
  10.      
  11. //保溫方法 
  12.      
  13. public 
  14.   
  15. void 
  16.  baoWen 
  17. (); 

 

  1. package 
  2.  zmldemo 
  3. //刷牙杯 
  4. public 
  5.   
  6. class 
  7.   
  8. ShuaYaBei 
  9.   
  10. extends 
  11.   
  12. Cup 
  13.   
  14.      
  15. public 
  16.   
  17. ShuaYaBei 
  18. () 
  19.   
  20.      
  21.  
  22.      
  23. public 
  24.   
  25. ShuaYaBei 
  26. String 
  27.  name 
  28.   
  29. String 
  30.  color 
  31.   
  32.          
  33. super 
  34. name 
  35.  color 
  36. ); 
  37.      
  38.  
  39.      
  40. @Override 
  41.      
  42. public 
  43.   
  44. void 
  45.  useCup 
  46. () 
  47.   
  48.          
  49. System 
  50. out 
  51. println 
  52. "我是" 
  53. this 
  54. color 
  55. "的" 
  56. this 
  57. name 
  58. "," 
  59. "我是用來刷牙的" 
  60. ); 
  61.      

 

  1. package 
  2.  zmldemo 
  3. //保溫杯 
  4. public 
  5.   
  6. class 
  7.   
  8. BaoWenBei 
  9.   
  10. extends 
  11.   
  12. Cup 
  13.   
  14. implements 
  15.   
  16. BaoWen 
  17.  
  18.      
  19. public 
  20.   
  21. BaoWenBei 
  22. (){ 
  23.  
  24.      
  25.      
  26. public 
  27.   
  28. BaoWenBei 
  29. String 
  30.  name 
  31. String 
  32.  color 
  33. ){ 
  34.          
  35. super 
  36. name 
  37. color 
  38. ); 
  39.      
  40.  
  41.  
  42.      
  43. @Override 
  44.      
  45. public 
  46.   
  47. void 
  48.  useCup 
  49. () 
  50.   
  51.          
  52. System 
  53. out 
  54. println 
  55. "我是" 
  56. this 
  57. color 
  58. "的" 
  59. this 
  60. name 
  61. "," 
  62. "我是用來喝水的" 
  63. ); 
  64.      
  65.  
  66.      
  67. @Override 
  68.      
  69. public 
  70.   
  71. void 
  72.  baoWen 
  73. () 
  74.   
  75.          
  76. System 
  77. out 
  78. println 
  79. "我能對水杯里的水進(jìn)行保溫" 
  80. ); 
  81.      

 

  1. package 
  2.  zmldemo 
  3.  
  4. public 
  5.   
  6. class 
  7.   
  8. CupTest 
  9.   
  10.      
  11. public 
  12.   
  13. static 
  14.   
  15. void 
  16.  main 
  17. String 
  18. [] 
  19.  args 
  20.   
  21.          
  22. ShuaYaBei 
  23.  shuaYaBei  
  24.   
  25. new 
  26.   
  27. ShuaYaBei 
  28. "刷牙杯" 
  29. "紅色" 
  30. ); 
  31.         shuaYaBei 
  32. useCup 
  33. (); 
  34.  
  35.          
  36. BaoWenBei 
  37.  baoWenBei  
  38.   
  39. new 
  40.   
  41. BaoWenBei 
  42. "保溫杯" 
  43. "金黃色" 
  44. ); 
  45.         baoWenBei 
  46. useCup 
  47. (); 
  48.         baoWenBei 
  49. baoWen 
  50. (); 
  51.  
  52.  
  53.      

運(yùn)行結(jié)果: 

 

我想看到這,學(xué)過抽象類和接口的朋友應(yīng)該能理解了,那本篇標(biāo)題“抽象類和接口到底是什么垃圾——秒懂”對應(yīng)的部分完成了,既然都說到這了,再來點(diǎn)延申。

話題延申

抽象類和接口能實(shí)例化對象嗎?

這個問題其實(shí)也有很多人糾結(jié),我之前專門有過對這個問題在網(wǎng)上進(jìn)行搜索查詢,看了好幾篇別人寫的博客,結(jié)果答案不一,理解各不相同,有的博客里的理解還有錯誤,容易對別人誤導(dǎo),后來我自己查資料,用自己的理解寫了一篇博客《抽象類能實(shí)例化嗎?——口氣很強(qiáng)硬——“不能”(詳解)》,結(jié)果當(dāng)然正如其名所示,是不能的,至于為何,里面有詳細(xì)的解釋,大家自行查閱,在這就不做補(bǔ)充了。

 

責(zé)任編輯:武曉燕 來源: 泰斗賢若如
相關(guān)推薦

2023-11-01 10:26:02

燈塔工廠數(shù)字化轉(zhuǎn)型

2009-08-14 15:42:11

什么是.NET接口.NET抽象類

2020-10-19 13:03:16

Java 8接口抽象類

2012-02-29 09:32:01

Java

2021-12-23 07:11:31

開發(fā)

2010-03-04 09:40:04

Java接口抽象類

2011-06-28 10:55:20

C#接口抽象類

2009-08-10 10:04:25

C#抽象類C#接口

2011-07-12 15:58:48

java抽象類接口

2009-04-30 15:15:01

Java抽象類接口

2009-07-30 18:36:00

C#接口C#抽象類

2011-04-27 09:30:48

企業(yè)架構(gòu)

2020-10-14 06:22:14

UWB技術(shù)感知

2010-11-01 01:25:36

Windows NT

2020-09-22 08:22:28

快充

2020-09-27 06:53:57

MavenCDNwrapper

2012-09-03 09:58:09

2011-05-19 18:01:56

JAVA

2011-07-06 10:33:31

C#

2011-07-10 14:07:59

JAVA
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號