亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

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

瀏覽:5日期:2022-08-23 16:15:34

1、單例模式:

1)提出原因

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

2)定義

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

A、構造方法私有化;

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

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

3)分類

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

public class CustomerSingleton { private static CustomerSingleton instance = new CustomerSingleton();//靜態私有成員,已初始化 private CustomerSingleton() { //私有構造函數 System.out.println('私有構造函數執行'); } public static CustomerSingleton getCustomerInstance() //靜態,不用同步(類加載時已初始化,不會有多線程的問題) { return instance; }}

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

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

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、多態的經典例子

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); }}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Java
相關文章:
主站蜘蛛池模板: 久久精品人人做人人爽 | 一级片黑人 | 麻豆传媒在线完整视频 | 精彩视频一区二区三区 | 免费看黄在线网站 | 国产精品性 | 亚洲欧洲国产日产 | 久久久久一区二区三区 | 黄色一级免费大片 | 久久精品国产72国产精福利 | 全午夜免费一级毛片 | 午夜激情在线观看 | 在线观看二区三区午夜 | 亚洲国产高清在线精品一区 | a级特黄毛片 | 亚洲国产99在线精品一区二区 | 日日cao | 男女强吻摸下面揉免费 | 国产精品亚洲玖玖玖在线靠爱 | 精品成人免费一区二区在线播放 | 国内在线亚洲精品第一线 | 国产护士恋夜各种姿势视频 | 国产夜色福利院在线观看免费 | 欧美一级高清免费a | 黄色网在线播放 | 99国产精品欧美久久久久久影院 | 亚洲国产成人久久精品图片 | 国产九九免费视频网站 | 欧美一级毛片aaaaa | 国产精品免费αv视频 | 国产精品视频牛仔裤一区 | 免费播放国产一级 | 国语对白清晰好大好白 | 国产亚洲久久 | 在线色图 | 伊人久久综合 | 一本色道久久88亚洲综合 | 国产成人精品无缓存在线播放 | 青青操国产在线 | 国产在线日本 | xvideos中国入口|