国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

香港云服务器
服務器之家 - 編程語言 - Java教程 - java中抽象類、抽象方法、接口與實現接口實例詳解

java中抽象類、抽象方法、接口與實現接口實例詳解

2021-01-30 12:21YJLAugus Java教程

這篇文章主要給大家介紹了關于java中抽象類、抽象方法、接口與實現接口的相關資料,文中通過示例代碼將四者介紹的非常詳細,并且簡單介紹了抽象類和接口的區別,需要的朋友可以參考借鑒,下面隨著小編來一起學習學習吧。

前言

對于java中的抽象類抽象方法接口,實現接口等具體的概念就不在這里詳細的說明了,網上書本都有很多解釋,主要是我懶,下面通過一個例子來說明其中的精髓要點,能不能練成絕世武功,踏上封王之路,就看自己的的啦(不要誤會,我指的只是我自己啦啦)

用接口實現一個簡單的計算器

1、利用接口做參數,寫個計算器,能完成+-*/運算

(1)定義一個接口Compute含有一個方法int computer(int n,int m);

(2)設計四個類分別實現此接口,完成+-*/運算

(3)設計一個類UseCompute,含有方法: public void useCom(Compute com, int one, int two)

       此方法要求能夠:

           * 1.用傳遞過來的對象調用computer方法完成運算

           * 2.輸出運算的結果

(4)設計一個測試類,調用UseCompute中的方法useCom來完成+-*/運算

?
1
2
3
4
5
6
7
8
//父類.并且使用用接口
package cn.yjlblog.wwww;
 
public interface Compute {
 int computer(int n,int m);//抽象方法,勝率abstract ,public
 
 
}
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//子類add 實現加法運算
package cn.yjlblog.wwww;
 
public class add implements Compute{
 
 @Override //接口的實現類和抽象類的子類是一樣的,要想可以使用new 一個對象,就必須對“抽象類”里的方法
   //進行重寫
 public int computer(int n, int m) {
  // TODO Auto-generated method stub
  return n+m;
 }
 
 
}
?
1
2
3
4
5
6
7
8
9
10
11
package cn.yjlblog.wwww;
//子類subtract 實現減法運算
public class subtract implements Compute{
 
 @Override
 public int computer(int n, int m) {
  // TODO Auto-generated method stub
  return n-m;
 }
 
}
?
1
2
3
4
5
6
7
8
9
10
11
12
13
子類multiplied 實現乘法運算
package cn.yjlblog.wwww;
 
public class multiplied implements Compute{
 
 @Override
 public int computer(int n, int m) {
  // TODO Auto-generated method stub
  return n*m;
 }
 
 
}
?
1
2
3
4
5
6
7
8
9
10
11
12
package cn.yjlblog.wwww;
//子類divided 實現整除運算
public class divided implements Compute{
 
 @Override
 public int computer(int n, int m) {
  // TODO Auto-generated method stub
  return n/m;
 }
 
 
}
?
1
2
3
4
5
6
7
8
9
10
11
12
//應用類UseComepute 用來
package cn.yjlblog.wwww;
 
public class UseComepute {
 public void useCom(Compute com,int one,int two){
  int x = com.computer(one, two);
  System.out.println("運算結果為:"+x);
 
 }
 
 
}
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//測試類Test
package cn.yjlblog.wwww;
 
public class Test {
 public static void main(String[] args) {
  UseComepute uc = new UseComepute();//應用類生成對象,使用useCome 方法
  int one = 10;
  int two = 20;
  Compute ad = new add();//接口的多態
  Compute sub = new subtract();
  Compute mul= new multiplied();
  Compute div = new divided();
  uc.useCom(ad, one, two);
  uc.useCom(sub, one, two);
  uc.useCom(mul, one, two);
  uc.useCom(div, one, two);
 
  //哈哈,類的名字忘記大寫了
 
 }
 
}

為什么需要用到抽象類?

在下面這個例子中,把打印機類封裝成抽象類,把print定義成抽象類,當HPPrinter和CannonPrinter要繼承printer類的時候,必須重寫print函數。這樣寫的好處是,每個打印機都有自己打印方式,此舉可以防止子類沒有寫明打印方式。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public abstract void Printer() {
public void open() {
system.out.print("打印機開啟");
}
public void close() {
system.out.print("打印機關閉");
}
abstract void print(); //把print方法定義為抽象方法
}
 
public HPPrinter extends Printer {
void print(){ //必須重寫抽象方法print()
system.out.print("惠普打印機開始打印");
};
}
 
public CanonPrinter extends Printer {
void print(){ //必須重寫抽象方法print()
system.out.print("佳能打印機開始打印");
};
}

抽象類和接口區別

(一)語法層次

?
1
2
3
4
5
6
7
8
9
public abstract class People { //關鍵詞abstract,聲明該類為抽象類
 void Num();      
 abstract void Name();    //聲明該方法為抽象方法
}
 
Interface Person {
  void Num();
  void Name();
} 

抽象類方式中,抽象類可以擁有任意范圍的成員數據,同時也可以擁有自己的非抽象方法,

但是接口方式中,它僅能夠有靜態、不能修改的成員數據(但是我們一般是不會在接口中使用成員數據),同時它所有的方法都必須是抽象的。

在某種程度上來說,接口是抽象類的特殊化。

對子類而言,它只能繼承一個抽象類(這是java為了數據安全而考慮的),但是卻可以實現多個接口。

(二)設計層次

1、 抽象層次不同

抽象類是對類抽象,而接口是對行為的抽象。抽象類是對整個類整體進行抽象,包括屬性、行為,但是接口卻是對類局部(行為)進行抽象。

2、 跨域不同

抽象類所跨域的是具有相似特點的類,而接口卻可以跨域不同的類。我們知道抽象類是從子類中發現公共部分,然后泛化成抽象類,子類繼承該父類即可,但是接口不同。實現它的子類可以不存在任何關系,共同之處。例如貓、狗可以抽象成一個動物類抽象類,具備叫的方法。鳥、飛機可以實現飛Fly接口,具備飛的行為,這里我們總不能將鳥、飛機共用一個父類吧!所以說抽象類所體現的是一種繼承關系,要想使得繼承關系合理,父類和派生類之間必須存在"is-a" 關系,即父類和派生類在概念本質上應該是相同的。對于接口則不然,并不要求接口的實現者和接口定義在概念本質上是一致的, 僅僅是實現了接口定義的契約而已。

3、 設計層次不同

對于抽象類而言,它是自下而上來設計的,我們要先知道子類才能抽象出父類,而接口則不同,它根本就不需要知道子類的存在,只需要定義一個規則即可,至于什么子類、什么時候怎么實現它一概不知。比如我們只有一個貓類在這里,如果你這是就抽象成一個動物類,是不是設計有點兒過度?我們起碼要有兩個動物類,貓、狗在這里,我們在抽象他們的共同點形成動物抽象類吧!所以說抽象類往往都是通過重構而來的!但是接口就不同,比如說飛,我們根本就不知道會有什么東西來實現這個飛接口,怎么實現也不得而知,我們要做的就是事前定義好飛的行為接口。所以說抽象類是自底向上抽象而來的,接口是自頂向下設計出來的。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對服務器之家的支持。

原文鏈接:http://www.yjlblog.cn/blog/?p=126

延伸 · 閱讀

精彩推薦
503
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 这里只有国产精品 | 午夜天 | 蜜桃av噜噜一区二区三区小说 | 成人高清 | 久久综合久久综合久久综合 | 精品久久久久久久人人人人传媒 | 精品久久久久久国产 | 成年人毛片在线观看 | 亚洲福利一区二区 | 久久久久国产精品免费免费搜索 | a级毛片免费高清视频 | 中国黄色片在线观看 | 日本一区二区视频免费观看 | 国产欧美精品一区二区三区四区 | 欧美激情精品久久久久久变态 | 日韩欧美在线一区 | 精品福利一区二区三区 | 免费成人在线视频网站 | 欧美日韩第一页 | 亚洲精品久久久久久久久久久久久 | 亚洲宗合网| 国偷自产一区二区免费视频 | 久久久国产精品 | 国产亚洲欧美美 | 欧美 日韩 国产 成人 在线 | 国产黄色av | 国产精品日产欧美久久久久 | 亚洲视屏| 久久人体视频 | 激情片网站| 午夜专区 | 亚洲欧美一级久久精品国产特黄 | av免费观看网站 | 亚洲午夜视频在线 | 在线日韩 | 日韩高清中文字幕 | 一区二区三区在线播放视频 | 亚洲午夜剧场 | 午夜小电影 | 免费的黄视频 | 婷婷综合色 |