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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

java 基础---继承

發(fā)布時間:2023/11/27 生活经验 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 基础---继承 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

繼承

一,概述

a)???????? 使用extends關(guān)鍵字可以讓一個類繼承另一個類,繼承的類為子類,被繼承的類是父類,子類會自動繼承父類的所有方法和屬性。

b)??????? 繼承使得類和類之間產(chǎn)生了關(guān)系

c)??????? 子類可以使用super調(diào)用父類成員

d)??????? 繼承的最終目的就是提高代碼的復(fù)用性。

e)???????? 當(dāng)發(fā)現(xiàn)一個類的功能不行時, 就可以派生子類增加方法。

什么時候定義繼承呢?

當(dāng)類與類之間有所屬( is? a )關(guān)系時,就會繼承。

一個類是一個另一個類中的一種。比如:蘋果是水果的一種。

?

繼承中子父類中成員的特點:

1,成員變量。

?????? 當(dāng)子父類出現(xiàn)同名變量時,可以使用super關(guān)鍵字區(qū)分。

?????? 一般這種情況很少見,因為父類已經(jīng)定義了,子類就沒有必要在定義了。

?????? 而且父類中的屬性都是私有的,子類也無法直接訪問。

?

?

2,成員函數(shù)。

?????? 當(dāng)子父類中出現(xiàn)一模一樣的函數(shù)時,就出現(xiàn)了覆蓋的操作。

?????? 所謂覆蓋,其實是子類對象在使用時,運行的是子類的函數(shù)。

?????? 好像父類的被覆蓋一樣。所以就形象成為函數(shù)的覆蓋,這是函數(shù)的另一個特性。

?

?????? 什么時候使用覆蓋呢?

?????? 當(dāng)父類的功能需要修改或者升級時,直接修改父類中的代碼,并不利于后期的擴展和維護。

?????? 可以定義一個子類對父類的功能進行覆蓋。

?????? 沿襲父類的功能定義,重寫功能的主體內(nèi)容。

?????? 這樣就提高擴展性和維護性。

?

?????? 手機的例子:來電顯示功能。

?

?????? 覆蓋的注意事項:

?????? 1,子類覆蓋父類必須權(quán)限大于等于父類的權(quán)限。

?????? 2,靜態(tài)只能覆蓋靜態(tài)。

3,構(gòu)造函數(shù)

?????? 子類的所有構(gòu)造函數(shù)默認(rèn)都會訪問父類中空參數(shù)的構(gòu)造函數(shù)。

?????? 因為子類的所有的構(gòu)造函數(shù)的默認(rèn)第一行都有一個隱式的語句,super();

?????? 為什么一定要調(diào)用父類構(gòu)造函數(shù)呢?

?????? 因為子類獲得父類中的數(shù)據(jù),需要父類先對數(shù)據(jù)進行初始化。

當(dāng)父類中沒有空參數(shù)的構(gòu)造函數(shù)時,子類就沒有辦法使用隱式的super();訪問父類中的構(gòu)造函數(shù),這時可通過手動用this或super語句來指定要訪問的構(gòu)造函數(shù)。

這就是子類實例化的過程。

?

this和super在用法上很相像,

?????? 可以使用這兩個關(guān)鍵字調(diào)用屬性,調(diào)用行為,區(qū)分同名屬性,區(qū)分同名行為。

?????? 可調(diào)用構(gòu)造函數(shù)。

但是有著本質(zhì)的區(qū)別:

?????? this指向的是一個本類對象。

?????? super并沒有指向一個對象,而僅僅代表父類的空間,應(yīng)該算是父類空間的一個標(biāo)識引用。

?

繼承的弊端:打破了封裝性。

解決方式可通過final關(guān)鍵字完成。

final關(guān)鍵字的出現(xiàn)其實是提高程序的嚴(yán)謹(jǐn),讓不允許改變的內(nèi)容固定下來。

特點:

1,? final修飾類,函數(shù),變量(類變量,實例變量,局部變量)

2,? final修飾的類不可被繼承。

3,? final修飾的方法不可被復(fù)寫。

4,? final修飾的變量是一個常量,只能被賦值一次。

?

對于參與運算不變的數(shù)據(jù),通常都會定義一個常量將該數(shù)據(jù)記錄下來。

目的是給該數(shù)值起一個名字,方便使用和閱讀。

常量定義規(guī)范:所有的字母都大寫,多個單詞用_相連。通常成員常量都是靜態(tài)的。

?

如何設(shè)計好繼承

1,? 把通用操作與方法放在父類中,因為一個父類可以有好幾個子類。如果是通用的操作,放在父類中,帶來的好處是多方面的,一是,避免代碼重復(fù),二,避免了人為因素導(dǎo)致的不一致。

2,? 不要使用受保護字段,也就是Pritected字段。

3,? 盡管類的繼承給開發(fā)帶來了好處和方便,但如果不希望自己的類在被擴展,也就不希望再產(chǎn)生子類時,可以在類的前面加上final。

?

?

?

?

向上轉(zhuǎn)型

當(dāng)用一個父類類型的變量在記錄子類對象時,子類對象會自動提升為父類的類型。

?

?

?

?

?

設(shè)計模式

?????? 解決某一類問題行之有效的方式;java中共有23種。是一種解決問題的思想。

單列模式

?????? 保證一個類在內(nèi)存中只有一個對象,也就保證了對象的唯一性。

?

什么時候要保證一個類中只有一個對象呢?

?????? 在java中只要建立對象就能獲取對象中的所有的方法和屬性。

思路:

1,? 不讓其他程序建立該類的對象。

2,? 在本類中建立一個本類對象。

3,? 將自定義的對象對外提供出去,讓其他程序訪問。

?

步驟,

1,? 將構(gòu)造函數(shù)私有化,不提供其他程序創(chuàng)建對象的初始化。

2,? new一個本類對象,私有并靜態(tài)。

3,? 定義一個公有的靜態(tài)方法返回該對象,讓其他程序可以調(diào)用。

?

餓漢式

?

public class SingleDemo {

??? private static SingleDemo s= new SingleDemo();

??? private SingleDemo(){}

??? public static SingleDemo getInstance()

??? {

?????? return s;

??? }

}

?

懶漢式;屬于對象的延遲加載,對于多線程并發(fā)訪問getInstance方法,會出現(xiàn)安全隱患。

class SingleDemo

{

??? private static SingleDemo s=null;

??? private SingleDemo(){}

??? public static SingleDemo getInstance()

??? {

?????? if(s==null)

?????????? s=new SingleDemo();

?????? return s;

??? }

}

?

優(yōu)化了安全問題????????????????????????? 我不懂的地方。

class SingleDemo {

??? private static SingleDemo s = null;

?

??? private SingleDemo() {

??? }

??? public static SingleDemo getInstance() {

?????? if (s == null) {

?????????? synchronized (SingleDemo.class) {

????????????? if (s == null)

????????????????? s = new SingleDemo();

?????????? }

?????? }

?????? return s;

??? }

}

?

模板設(shè)計模式

定義功能時,一部分功能是確定的,而一部分功能確定不了。確定的功能還要預(yù)先使用不確定的部分。

這時可將不確定部分對外暴露,由子類去實現(xiàn)。

?

?

轉(zhuǎn)載于:https://www.cnblogs.com/liuhongliang1234/p/3430566.html

總結(jié)

以上是生活随笔為你收集整理的java 基础---继承的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。