Java筆記03-Constructor Override

Java筆記03-Constructor & Override

構造方法基本概念

構造方法是類中的一種特殊方法

它是在類創建對象(實例化)的時候自動調用的方法

這個和python中的__init__初始化魔術方法類似

可以在創建對象的時候進行參數的傳遞

默認送您的構造

一個類編譯過后都需要有一個構造方法.如果程序中沒有寫的話

編譯器在編譯時就會幫你加上一個無參數的空的構造方法(稱之為"默認的構造方法")

那要是你定義了構造方法了,編譯器也不欠欠的幫你加了,它也懶

關于構造的建議

  • 當類中有成員變量,并且還不是常量的時候,建議提供兩個版本的構造方法,一個無參數的構造,一個全屬性的構造

  • 而類中所有成員變量都是常量或者干脆就沒有成員變量的時候,建議不要寫構造

成員方法重載

說白了就是同樣名稱的方法,可以有很多不同參數列表的版本,有的有參數,有的沒有參數,而方法名一樣

這樣官方說能讓類的設計變的更加優雅,我是沒看出來

好像是能夠一個方法處理不同的數據

這樣的設計方式成為重載設計

this關鍵字

this就是代表對象本身(調用該方法的對象)
就像JavaScript中的this
就像python中的self

OOP三大特性之封裝

封裝的面向對象的三大特性之一,

如果代碼不做限制,則很多屬性值是無效的

封裝就是保證屬性值有效的技術

封裝的步驟

  1. 屬性(不是常量的)必須使用private修飾,確保外部變量無法直接進行賦值操作

  2. 提供操作屬性的方法,一般都是讀寫屬性方法,get屬性和set屬性方法

  3. 構造方法中,也要通過調用set和get方法來操作

static關鍵字

靜態static關鍵字修飾屬性或者方法

可以將對象層級從對象級升級成為類級別,在類加載的時候就可以調用準備好的屬性或者方法

換句話說就是static修飾的可以直接進行調用

單例設計模式

設計模式是形成標準化流程的經驗總結,是特定問題的固定的解決方案

單例設計思路:

1. 先private構造,阻止外部去創建對象
2. 本類提供一個對象,定義一個private static 的本類類型的屬性  
3. 對外提供get方法,將唯一的對象返回到外部  

單例分為餓漢式和懶漢式兩種寫法

java中單例模式是一種常見的設計模式,在實際開發中比較常用
具體詳細內容可以參考:Java設計模式之單例模式

OOP三大特性之繼承

繼承就是子類復用父類的代碼

使用關鍵字extends表示類和類之間的繼承關系

class Son extends Father{// ... 
}

Java中不能多繼承,可以通過接口的多實現來彌補類的多繼承

繼承中的構造方法

子類必須通過super();關鍵字才能調用父類中的構造方法

這樣才能好好的初始化來自父類的成員變量

this()super()必須出現在構造的第一行,因此不可能同時出現

方法的重寫

  • 有些父類寫好的方法,子類它不太喜歡

子類就可以使用方法重寫(覆蓋)來改變他爸爸給他的方法

  • 方法重寫的原則:
1. 相同的方法名稱,相同的參數列表,相同的返回值類型或者返回子類
2. 訪問權限不能變小,可以變大
3. 不能拋出更大的異常
  • 在子類重寫的方法中,可以通過super關鍵字調用父類的"原始"方法.
  • static 方法重寫之后還是static

OOP三大特性之多態

一母生九子,九子各不同

Person p = new Student();
  1. 只能使用母類中定義的屬性和方法
  2. 不能直接使用子類中擴展的屬性和方法
  3. 如果子類重寫了方法,靜態方法調父類的,非靜態方法調子類的
    原因:
    編譯時,p被認為是Person類型;但在運行時是Student類型.在內存中其實是子類對象.

總結:
子即為多態

多態特點

多態時,如果想要把擴展的屬性和方法調用出來,需要做類型轉換

父類子類需要做強制類型轉換(向轉型)
子類父類需要做強制類型轉換(向轉型)

對象強制類型轉換是一種還原行為,必須內存中是該類型的對象才能成功

instanceof運算符

instanceof就是判斷對象的類型,如果是該類型返回true,不是返回false

語法格式:

對象 instanceof 類型
obj instanceof Object
p instanceof Person

嚴格的來說,在進行對象的向下轉型之前,都得instanceof一下才能

這個instanceof必須發生在父子之間才行哦!

抽象類

用abstract修飾的類,這個類吧就厲害了

它不能實例化,這可咋用啊

唉,對 就是用來繼承的,你不能實例化你兒子行啊

抽象方法所在類必須是抽象類,而子類如果不是抽象類,一定要重寫父類中的抽象方法才行(實現父類的方法體)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/455491.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/455491.shtml
英文地址,請注明出處:http://en.pswp.cn/news/455491.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

生物信息學概論_大學專業詳解系列83——生物信息學(理學學士)

生物信息學(理學學士)畢業生應具備的知識和能力(1)掌握扎實的數學、物理、化學基礎理論和基本知識;(2)掌握生物學專業基礎知識和信息處理的專門知識;(3)掌握普通生物學、細胞生物學、遺傳學、分子生物學、生物數據庫管理系統、生物信息學、基因組學、蛋白…

R語言時間序列數據應用xts

zoo是時間序列的基礎庫,是面向通用的設計。 xts 是對時間序列庫(zoo) 的一種擴展實現。xts 類型繼承了zoo 類型,豐富了時間序列數據處理的函數。 一、xts對象的結構和定義 1、xts對象是一個具有時間索引的觀測值矩陣,結構如下: xts matrix …

Java筆記04-核心類庫

Java筆記04-核心類庫 Object類 1.1 常用的包 java.lang包 -該包是Java語言中的核心包,該包中的內容由Java虛擬機自動導入 如:String類,System類等java.util包- 該包是Java語言中的工具包,里面包含了大量的工具類和集合類等java.io包 是輸入輸出包,包括讀寫各種設備java.net…

Butterknife全方位解析

概述 Butterknife是供職于Square公司的JakeWharton大神開發的開源庫,使用這個庫,在AS中搭配Android ButterKnife Zelezny插件,可以大大提高開發的效率,從此擺脫繁瑣的findViewById(int id),也不用自己手動bind(int id)…

Linux下編譯FFMpeg

環境:RedHat AS4  1。首先獲取ffmpeg  通過svn下載:  從 http://subversion.tigris.org下載SVN客戶端程序。   先裝subversion,確保已經安裝了apr和apr-util,在apache.org網站能下到  wget http://subversion.tigris.or…

論文筆記 Aggregated Residual Transformations for Deep Neural Networks

這篇文章構建了一個基本“Block”,并在此“Block”基礎上引入了一個新的維度“cardinality”(字母“C”在圖、表中表示這一維度)。深度網絡的另外兩個維度分別為depth(層數)、width(width指一個層的channel的數目)。 首…

matlab 歸一化_機器學習中如何用Fscore進行特征選擇(附Matlab代碼)

作者:kervin編輯:阿吉 目前,機器學習在腦科學領域的應用可謂廣泛而深入,不論你是做EEG/ERP研究,還是做MRI研究,都會看到機器學習的身影。機器學習最簡單或者最常用的一個應用方向是分類,…

Java筆記05-Collection、泛型、迭代器

Java筆記05-Collection、泛型、迭代器 【Collection、泛型】 主要內容 Collection集合迭代器增強for泛型 第一章 Collection集合 1.1 集合概述 在前面基礎班我們已經學習過并使用過集合ArrayList ,那么集合到底是什么呢? 集合:集合是java中提供的一種容器&a…

IOS安裝CocoaPods完整流程

作為一個底層系統大菜鳥,又搞過幾年ios來說,安裝一個CocoaPods是一件蛋痛的事~ 說懂又懂,說不懂又不懂. 由于安裝過程比較復雜,步驟較多,而網上教程又比較零散,并且有一些是扯蛋的,所以本篇文章主要從頭到位依據自身安裝經歷記錄每一條終端指令,至于里面的原理和一些概念性的東…

重裝TCP/IP

在Windows XP的網絡組件列表里,Internet 協議 (TCP/IP)的"卸載"按鈕是灰色不可選狀態。這是因為傳輸控制協議/Internet 協議 (TCP/IP) 堆棧是 Microsoft XP/ 2003 的核心組件(TCP/IP協議是Windows XP的默認協議),不能刪除。所以Windows XP不允許卸載TCP/I…

linux 修改時區_教你在Centos8中更改時區

對于許多與系統相關的任務和進程,使用正確的時區是必不可少的。例如,cron守護進程使用系統的時區執行cron作業,日志文件中的時間戳基于同一系統的時區。環 境CentOS 8檢查現在的時區timedatectl是一個命令行實用程序,允許您查看和…

UVA12511 - Virus(DP+最長公共上升子序列)

題目鏈接: https://vjudge.net/problem/UVA-12511 題目大意: 給定兩個序列,求出兩個序列的最長公共上升子序列(嚴格上升)。 解題過程: 比賽的時候沒有做出來,非常咸魚的一場比賽,當時…

Java筆記06-Map集合

Map集合 學習目標 能夠說出Map集合特點使用Map集合添加方法保存數據使用”鍵找值”的方式遍歷Map集合使用”鍵值對”的方式遍歷Map集合能夠使用HashMap存儲自定義鍵值對的數據能夠使用HashMap編寫斗地主洗牌發牌案例 Map集合概述 啥也不用說,Map集合就相當于python中的字典…

理解什么是前后端分離

HTML、CSS、JS。 AJAX或Fetch。 學習一個前端的框架, React或者Vue或者Angularjs2都可以。 學會一個前端的路由框架, 如React-Router或者Vue-Router。 在學會3的基礎上你肯定已經搭建好前端的開發環境了,所有和后端的交互走AJAX或者Fetch…

幀間、幀內像素塊預測

一、像素塊預測 H.264/ AVC標準中的基本預測技術是基于塊,而不是基于對象的。它的編碼器是利用混合的編碼方案來提高編碼效率,這些方案包括高級的預測技術和有效熵編碼技術。在運動預測中它使用不同的塊的大小進行預測,以樹結構的方式來組織…

高性能mysql 第10章 復制

復制功能不僅能夠構建高可用的應用,同時也是高可用性,可擴展性,災難恢復,備份以及數據倉庫等工作的基礎。 mysql支持兩種復制方式:基于語句的復制和基于行的復制。基于語句的復制(也成為邏輯復制&#xff0…

vb6在后臺將窗體保存到圖片_如何將寺庫網多個商品圖片一鍵分類保存到一個目錄...

寺庫網是全球最大的奢侈品網上在線購物平臺,那么我們怎樣可以從寺庫網上一鍵批量采集到多個寶貝商品圖片,并分類保存到電腦呢?今天小編給大家帶來一款專業電商圖片鏈接采集軟件【載圖助手】,它支持平臺高達141個,均可支…

Java筆記07-List、Set、數據結構、Collections

Java筆記07-List、Set、數據結構、Collections 主要內容 數據結構List集合Set集合Collections 第一章 數據結構 2.1 數據結構有什么用? 當你用著java里面的容器類很爽的時候,你有沒有想過,怎么ArrayList就像一個無限擴充的數組&#xff…

Apache安裝問題:configure: error: APR not found . Please read the documentation

參考:http://cuisuqiang.iteye.com/blog/2068794 http://www.cnblogs.com/Anker/p/3355573.html pcre: https://ftp.pcre.org/pub/pcre/ http://www.linuxidc.com/Linux/2012-06/62289.htm 1. 不贊成去卸載httpd的東西。 2. server上可以存在多個apache。一個是rpm&…

浮動與定位

2019獨角獸企業重金招聘Python工程師標準>>> 一.浮動:float:一個元素浮動時,其他內容會"環繞"該元素. 浮動元素的外邊距不會合并浮動的元素不能超出其包含快的內邊界浮動元素彼此會避免重疊浮動元素的頂端不能比之前所有浮動元素或塊級元素的頂端更高如果…