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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

java 基础---继承

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

繼承

一,概述

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

b)??????? 繼承使得類和類之間產生了關系

c)??????? 子類可以使用super調用父類成員

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

e)???????? 當發現一個類的功能不行時, 就可以派生子類增加方法。

什么時候定義繼承呢?

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

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

?

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

1,成員變量。

?????? 當子父類出現同名變量時,可以使用super關鍵字區分。

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

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

?

?

2,成員函數。

?????? 當子父類中出現一模一樣的函數時,就出現了覆蓋的操作。

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

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

?

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

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

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

?????? 沿襲父類的功能定義,重寫功能的主體內容。

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

?

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

?

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

?????? 1,子類覆蓋父類必須權限大于等于父類的權限。

?????? 2,靜態只能覆蓋靜態。

3,構造函數

?????? 子類的所有構造函數默認都會訪問父類中空參數的構造函數。

?????? 因為子類的所有的構造函數的默認第一行都有一個隱式的語句,super();

?????? 為什么一定要調用父類構造函數呢?

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

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

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

?

this和super在用法上很相像,

?????? 可以使用這兩個關鍵字調用屬性,調用行為,區分同名屬性,區分同名行為。

?????? 可調用構造函數。

但是有著本質的區別:

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

?????? super并沒有指向一個對象,而僅僅代表父類的空間,應該算是父類空間的一個標識引用。

?

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

解決方式可通過final關鍵字完成。

final關鍵字的出現其實是提高程序的嚴謹,讓不允許改變的內容固定下來。

特點:

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

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

3,? final修飾的方法不可被復寫。

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

?

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

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

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

?

如何設計好繼承

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

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

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

?

?

?

?

向上轉型

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

?

?

?

?

?

設計模式

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

單列模式

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

?

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

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

思路:

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

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

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

?

步驟,

1,? 將構造函數私有化,不提供其他程序創建對象的初始化。

2,? new一個本類對象,私有并靜態。

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

?

餓漢式

?

public class SingleDemo {

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

??? private SingleDemo(){}

??? public static SingleDemo getInstance()

??? {

?????? return s;

??? }

}

?

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

class SingleDemo

{

??? private static SingleDemo s=null;

??? private SingleDemo(){}

??? public static SingleDemo getInstance()

??? {

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

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

?????? return s;

??? }

}

?

優化了安全問題????????????????????????? 我不懂的地方。

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;

??? }

}

?

模板設計模式

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

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

?

?

轉載于:https://www.cnblogs.com/liuhongliang1234/p/3430566.html

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。