日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

面对对象(接口)

發布時間:2023/12/15 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 面对对象(接口) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?一.? 接口(interface),是一種引用數據類型。

?  interface 差不多= = abstract class

  1)接口是has a (繼承是is a):“像”我中的一種,是繼承體系之外的,用于功能擴展!想擴展就實現,不想就不用實現。
  2)接口中只能聲明抽象方法和常量且聲明格式都是固定的,定義的所有變量都是static final類型的,只不過可以省略。
注意:接口中聲明常量和抽象方法的格式是固定的

1 public interface Test { 2 /*public abstract final*/int SPEED=100;//聲明常量 3 /*public abstract 省略了,寫也對*/void showInfo();//聲明抽象方法 4 }

  ?3)接口中的方法都是公共抽象方法

1 public interface MyInterface { 2 public abstract void showInfo(); 3 void showInfo3(); 4 5 // 推薦寫法 6 public void showInfo2(); 7 }

?

二.接口的多態現象

  1)接口不能有構造器,因為不能實例化何以初始化,接口只能被“實現”。

  2)具體類實現了一個接口,則必須實現全部的抽象方法,若沒有全部實現,則該類為抽象類。所以說,接口約定了具體類的方法,約定了類的外部行為。

  3)具體類可以同時實現多個接口,就是多繼承現象。

  4)多重繼承:實現類Student具備了駕駛能力,實現類Teacher也具備了駕駛能力,原因是都實現了Drive,兩個實現類的能力得到了增強。

  5)接口用implements 表實現,實際是繼承關系,可有多個接口(實現),繼承用extends 只能有一個繼承關系。

  6)一個類既可以繼承的同時,又“實現”接口:class A extends B implements C , D;

  7)類與類之間是繼承關系,類與接口之間是實現關系,接口與接口之間是繼承關系,且只有接口之間可以多繼承,即:interface A{},interface B{},interface C extends A , B 但接口多繼承時要注意,要避免A、B接口中有方法名相同、參數列表相同,但返回值類 型不相同的情況,因為被具體類實現時,不確定調用哪個方法。

三.?抽象類和接口的異同比較

?1.abstract class和interface有什么區別?

  1)從編程的角度:abstract class在java語言中表示的是一種繼承關系,一個類只能使用一次繼承關系。而一個類可以實現多個interface。
  2)從問題域角度:abstract class在Java語言中體現了一種繼承關系,要想使得繼承關系合理,父類和派生類之間必須存在"is a"關系,即父類和派生類在概念本質上應該是相同的。對于interface 來說則不然,并不要求interface的實現者和interface定義在概念本質上是一致的,僅僅是實現了interface定義的約定(協議)而已。

2.抽象類和接口的異同

  1)抽象類和接口都是引用數據類型,他們都不能創建對象,都可以定義抽象方法,都可以實現多態;但是抽象類可以定義非抽象方法,而接口中定義的都是抽象方法。

  2)抽象類和接口都具有傳遞性。抽象類是單根性(單繼承),而接口是多繼承;重要的是:抽象類和子類解決的是模塊內的問題(代碼重用,重寫,多態)而接口解決的是模塊間的問題。

四.內部類

?在類內部定義的類為成員內部類,在方法里定義的類為局部內部類,被static修飾的為靜態內部類。一個類中可有多個內部類。

1)內部類主要用于,封裝一個類的聲明在類的內部,減少類的暴露。
2)內部類的實例化:實例化時不需要出寫對象,非要寫的話為:new 外部類名.內部類名();而不是外部類名.new 內部類名()。

?

當內部類定義在外部類的成員位置上,而且非私有,則在外部其他類中可以直接建立內部類對象。格式:外部類名.內部類名變量名= 外部類對象.內部類對象;
Outer.Inner in = new Outer().new Inner();

?

1 public class Test01 { 2 public static void main(String[] args) { 3 4 // 【1】創建外部類對象 5 Outer outer = new Outer(); 6 // 【2】創建內部類對象 7 Inner inner = outer.new Inner(); 8 inner.showInfo(); 9 } 10 }

3)內部類中可以訪問外部類的私有變量

1 public class Outer { 2 3 private String name = "Outer"; 4 5 class Inner{ 6 7 public void showInfo() { 8 System.out.println(name); 9 } 10 11 } 12 }

特殊情況:重名,外部類和內部類的變量同名

1 public class Outer { 2 3 private String name = "Outer"; 4 5 class Inner{ 6 7 private String name = "Inner"; 8 9 public void showInfo() { 10 // String name = "show info"; 11 12 // 訪問外部類的私有成員 13 System.out.println(this.name); 14 15 // 訪問外部類的私有成員 16 System.out.println(Outer.this.name); 17 18 } 19 } 20 }

?

注意事項:
  當內部類中定義了靜態成員,該內部類必須是static的。
  當外部類中的靜態方法訪問內部類時,內部類也必須是static的。
4)內部類想調用外部類的成員,需要使用:外部類名.this.成員,即Outter.this表示外部類的對象。如果寫this.成員= =成員,調用的還是內部類的成員(屬性或方法)。

?

轉載于:https://www.cnblogs.com/abcdjava/p/10770425.html

總結

以上是生活随笔為你收集整理的面对对象(接口)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。