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

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

PHP教程|ASP.NET教程|JAVA教程|ASP教程|編程技術|正則表達式|

服務器之家 - 編程語言 - JAVA教程 - Java單例模式繼承覆蓋多態原理詳解

Java單例模式繼承覆蓋多態原理詳解

2020-09-29 00:29愛笑的berg JAVA教程

這篇文章主要介紹了Java單例模式繼承覆蓋多態原理詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

1、單例模式

1)提出原因

  是由gof 也就是四人組提出來的。為了保證jvm中某一類型的java對象永遠只有一個,同時也是為了節省內存的開銷。因為外面程序可以通過new的方法直接調用類里面的構造方法。導致該類的對象不止一個。

2)定義

  單例模式的意思就是只有一個實例。單例模式確保某一個類只有一個實例,而且自行實例化并向整個系統提供這個實例。這個類稱為單例類。

A、構造方法私有化;

B、對外提供一個公開的、靜態的、獲取當前類型對象的方法

C、提供一個當前類型的靜態變量。

3)分類

A、餓漢式單例模式:在類加載時就完成了初始化,所以類加載較慢,但獲取對象的速度快

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class CustomerSingleton {
  private static CustomerSingleton instance = new CustomerSingleton();//靜態私有成員,已初始化
  
  private CustomerSingleton()
  {
    //私有構造函數
   System.out.println("私有構造函數執行");
  }
  
  public static CustomerSingleton getCustomerInstance()  //靜態,不用同步(類加載時已初始化,不會有多線程的問題)
  {
    return instance;
  }
}

B、懶漢式單例:類加載時不初始化

當調用getInstance方法的時候,底層的對象才會考慮創建,所以顯得比較懶

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class UserSingleton {
   //提供一個當前類型的靜態變量
   public static UserSingleton intance=null;
 
   //構造方法私有化
   private UserSingleton(){
    System.out.println("構造函數私有化");
   }
 
   //對外提供一個公開獲取Singleton 對象的方法
   public static UserSingleton getInstance(){
     if(intance==null){
      intance=new UserSingleton();
   }
    return intance;
   }
}

2、繼承

1)繼承的語法:java中類只支持單繼承,一個類繼承了A類就無法再繼承B類,繼承是面向對象的重要概念。一個類沒有現實的繼承其他類,默認繼承sun提供的java.lang.object

   [修飾符列表] class 子類名 extends 父類名{
    類體;

  }

備注:

java語言中子類繼承父類,會將父類中所有的數據全部繼承,包括私有的也能繼承過來;

但是在子類中無法直接訪問父類中的私有數據。但是可以間接訪問,構造方法無法被子類繼承。

3、方法的覆蓋

1)什么時候方法要進行覆蓋?

如果父類中的方法已經無法滿足當前子類的業務需求,需要將父類中的方法進行覆蓋重新子類如果重寫父類的方法之后,子類對象一定調用的是重寫之后的方法。覆蓋指的是成員方法和成員變量無關。

2)發生方法覆蓋的條件:

  • 第一:發生在具有繼承關系的兩個類之間
  • 第二:必須具有相同的方法名,相同的返回值類型,相同的參數列表
  • 第三:重寫的方法不能比被重寫的方法擁有更低的訪問權限
  • 第四:重寫的方法不能比被重寫的方法拋出更寬泛的異常
  • 第五:私有的方法不能被覆蓋(因為私有方法無法被子類訪問,所以不能重寫;必須是public的方法才能被覆蓋,如果定義成了final是不可以被重寫的)
  • 第六:構造方法無法被覆蓋,因為構造方法無法被繼承。
  • 第七:靜態的方法不存在覆蓋
  • 第八:覆蓋指的是成員方法,和成員變量無關。

4、多態

向上轉型:子轉父(父類型的引用,指向子類型的對象);

向下轉型:父轉子(子類型的引用,指向父類型的對象);

多態編譯期是靜態綁定,而運行期是動態綁定

5、多態的經典例子

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
public class Person {
   public void feed (Animal a){
    a.eat();
   }
}
 
public class Animal {
   public void eat(){
 
   }
}
 
public class Dog extends Animal {
   public void eat(){
     System.out.println("狗在吃肉");
   }
}
 
public class Cat extends Animal {
   public void eat(){
     System.out.println("貓在吃魚");
   }
}
 
public class Test01 {
   public static void main(String[] args) {
     Person p1=new Person();
      Dog d1=new Dog();
     Cat c1=new Cat();
     p1.feed(d1);
     p1.feed(c1);
   }
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://www.cnblogs.com/jiarui-zjb/p/6179522.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 久久久五月天 | 日韩影音| 中文字幕av第一页 | 亚洲视频精品一区 | 日日操夜夜操天天操 | 成人福利在线观看 | 日本理伦片午夜理伦片 | 亚洲国产二区 | 亚洲免费在线播放 | 四虎影视最新免费版 | 激情视频网 | 成人免费视频网站在线观看 | 日韩福利视频 | 亚洲国产精品无卡做爰天天 | 亚洲精品久久久一区二区三区 | 久久尤物免费一区二区三区 | 国产欧美精品一区二区三区四区 | 日韩精品一区二区三区四区 | 日韩午夜激情视频 | 日韩av免费在线观看 | 久久亚洲欧美日韩精品专区 | 黄色大片免费网址 | 欧美日韩在线视频观看 | 日韩激情在线 | 国产a级黄色毛片 | 日韩中文一区二区三区 | 精品久久久久久久久久久久 | 香蕉依人| 精品成人av | 午夜婷婷丁香 | 亚洲专区在线播放 | 久久小视频 | 亚洲国产婷婷香蕉久久久久久99 | 国产第一区二区三区 | 亚洲人视频 | 日韩中文字幕无码一区二区三区 | 日韩视频在线观看 | 色橹橹欧美在线观看视频高清 | 日韩成人在线观看 | 天堂资源最新在线 | 亚洲一区二区精品 |