av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Java單例模式繼承覆蓋多態(tài)原理詳解

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

1、單例模式:

1)提出原因

是由gof 也就是四人組提出來(lái)的。為了保證jvm中某一類型的java對(duì)象永遠(yuǎn)只有一個(gè),同時(shí)也是為了節(jié)省內(nèi)存的開(kāi)銷。因?yàn)橥饷娉绦蚩梢酝ㄟ^(guò)new的方法直接調(diào)用類里面的構(gòu)造方法。導(dǎo)致該類的對(duì)象不止一個(gè)。

2)定義

單例模式的意思就是只有一個(gè)實(shí)例。單例模式確保某一個(gè)類只有一個(gè)實(shí)例,而且自行實(shí)例化并向整個(gè)系統(tǒng)提供這個(gè)實(shí)例。這個(gè)類稱為單例類。

A、構(gòu)造方法私有化;

B、對(duì)外提供一個(gè)公開(kāi)的、靜態(tài)的、獲取當(dāng)前類型對(duì)象的方法

C、提供一個(gè)當(dāng)前類型的靜態(tài)變量。

3)分類

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

public class CustomerSingleton { private static CustomerSingleton instance = new CustomerSingleton();//靜態(tài)私有成員,已初始化 private CustomerSingleton() { //私有構(gòu)造函數(shù) System.out.println('私有構(gòu)造函數(shù)執(zhí)行'); } public static CustomerSingleton getCustomerInstance() //靜態(tài),不用同步(類加載時(shí)已初始化,不會(huì)有多線程的問(wèn)題) { return instance; }}

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

當(dāng)調(diào)用getInstance方法的時(shí)候,底層的對(duì)象才會(huì)考慮創(chuàng)建,所以顯得比較懶

public class UserSingleton { //提供一個(gè)當(dāng)前類型的靜態(tài)變量 public static UserSingleton intance=null; //構(gòu)造方法私有化 private UserSingleton(){ System.out.println('構(gòu)造函數(shù)私有化'); } //對(duì)外提供一個(gè)公開(kāi)獲取Singleton 對(duì)象的方法 public static UserSingleton getInstance(){ if(intance==null){ intance=new UserSingleton(); } return intance; }}

2、繼承

1)繼承的語(yǔ)法:java中類只支持單繼承,一個(gè)類繼承了A類就無(wú)法再繼承B類,繼承是面向?qū)ο蟮闹匾拍睢R粋€(gè)類沒(méi)有現(xiàn)實(shí)的繼承其他類,默認(rèn)繼承sun提供的java.lang.object

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

}

備注:

java語(yǔ)言中子類繼承父類,會(huì)將父類中所有的數(shù)據(jù)全部繼承,包括私有的也能繼承過(guò)來(lái);

但是在子類中無(wú)法直接訪問(wèn)父類中的私有數(shù)據(jù)。但是可以間接訪問(wèn),構(gòu)造方法無(wú)法被子類繼承。

3、方法的覆蓋

1)什么時(shí)候方法要進(jìn)行覆蓋?

如果父類中的方法已經(jīng)無(wú)法滿足當(dāng)前子類的業(yè)務(wù)需求,需要將父類中的方法進(jìn)行覆蓋重新子類如果重寫父類的方法之后,子類對(duì)象一定調(diào)用的是重寫之后的方法。覆蓋指的是成員方法和成員變量無(wú)關(guān)。

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

第一:發(fā)生在具有繼承關(guān)系的兩個(gè)類之間 第二:必須具有相同的方法名,相同的返回值類型,相同的參數(shù)列表 第三:重寫的方法不能比被重寫的方法擁有更低的訪問(wèn)權(quán)限 第四:重寫的方法不能比被重寫的方法拋出更寬泛的異常 第五:私有的方法不能被覆蓋(因?yàn)樗接蟹椒o(wú)法被子類訪問(wèn),所以不能重寫;必須是public的方法才能被覆蓋,如果定義成了final是不可以被重寫的) 第六:構(gòu)造方法無(wú)法被覆蓋,因?yàn)闃?gòu)造方法無(wú)法被繼承。 第七:靜態(tài)的方法不存在覆蓋 第八:覆蓋指的是成員方法,和成員變量無(wú)關(guān)。

4、多態(tài)

向上轉(zhuǎn)型:子轉(zhuǎn)父(父類型的引用,指向子類型的對(duì)象);

向下轉(zhuǎn)型:父轉(zhuǎn)子(子類型的引用,指向父類型的對(duì)象);

多態(tài)編譯期是靜態(tài)綁定,而運(yùn)行期是動(dòng)態(tài)綁定

5、多態(tài)的經(jīng)典例子

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('貓?jiān)诔贼~(yú)'); }}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); }}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 国产黄色一级片 | 亚洲精品电影在线观看 | 涩涩操| 久久精品99国产精品日本 | 91精品国产91久久久久久最新 | 欧美激情久久久 | 国产精品国产三级国产aⅴ中文 | 国产精品久久久久久吹潮 | 一级片在线观看 | 亚洲精品黄色 | 欧美a在线观看 | 91免费小视频 | 精品欧美一区二区精品久久久 | 亚洲国产精品成人综合久久久 | 久久一久久 | 免费黄色的视频 | 9色视频在线 | 免费视频一区二区 | 在线精品观看 | 精品综合 | 国产视频一区二区 | 日韩欧美在线视频观看 | 国产清纯白嫩初高生视频在线观看 | 免费日本视频 | 欧美黑人国产人伦爽爽爽 | 一区二区三区四区不卡 | 中文字幕一区在线观看视频 | 亚洲一区二区久久久 | 久久久国产一区二区 | 亚洲福利在线观看 | 中文字幕精品一区二区三区精品 | 伊人伊人 | 成人1区2区 | 欧美中文字幕一区 | 成年人国产在线观看 | 国产熟熟| 播放一级毛片 | 亚洲国产一区二区在线 | 亚洲视频免费在线观看 | 中文区中文字幕免费看 | 成人午夜激情 |