Java期末復習指南(1):知識點總結+思維導圖,考試速成!

🔖面向對象


📖 Java作為面向對象的編程語言,我們首先必須要了解類和對象的概念,本章的所有內容和知識都是圍繞類和對象展開的!

? 思維導圖1

???類和對象的概念

??? 簡單來說,類就是對具有相同特征的一類事物的描述,而對象是類的具體實例.

????比如說 '車' 就是一個大的概念,它可以具體化為奔馳、寶馬、帕拉梅拉。那么車就是一個類,奔馳車就是以車類為模版的一個實例化對象。

??? 一個類中包含成員變量和成員方法

?上圖程序最終輸出:50W帕拉梅拉 is running

?

??構造方法

??? 構造方法的作用是初始化對象,并且分為無參構造方法和有參構造方法

??? 構造方法的方法名與類名相同,沒有返回值,且不需要void修飾。?

????如果一個類沒有定義構造方法,Java會提供一個默認的無參構造方法

??? ?在一個類中可以有多個構造方法 ( 構造方法可以重載 ).

public class Car {String name;String price;//無參構造方法public Car(){name="帕拉梅拉";price="50W";System.out.println(name+price);}//有參構造方法public Car(String name,String price){this.name=name;this.price=price;System.out.println(name+price);}public static void main(String[] args) {new Car();//輸出: 帕拉梅拉50Wnew Car("奔馳","40W");//輸出: 奔馳40W}
}

?

??方法的重載

??? 當一個類中有多個名字相同的方法時,可以通過參數的個數、類型、順序,在調用時進行區分

????方法的重載與返回值類型無關

public class Car {String name;String price;int count;//有參構造方法public Car(String name,String price){this.name=name;this.price=price;System.out.println(name+price);}//參數的類型不同public Car(String name,int count){this.name=name;this.count=count;System.out.println(name+count);}//參數順序不同public Car(int count,String name){this.name=name;this.count=count;System.out.println(name+count);}public static void main(String[] args) {new Car("奔馳","40W");//輸出:  奔馳40Wnew Car("帕拉梅拉",6);//輸出:  帕拉梅拉6new Car(6, "帕拉梅拉");//輸出: 帕拉梅拉6}
}

?

??this與super關鍵字

??? this在類中表示當前正在訪問的對象,主要是為了區分成員變量和局部變量

??封裝

??? 即為成員變量或成員方法添加一個訪問權限修飾符,使外界不得隨意操作,主動權在類的手中 .

📖訪問權限修飾符

??? public ? ? ? ?公共權限 ------- 修飾的成員在任何地方都可以訪問到. ?

??? protected ?受保護權限 ---- 在本類 / 同包的其他類中可以訪問到,及不同包的子類.

??? default ? ? ? 默認權限 ------- 在本類 / 同包的其他類中可以訪問到.

??? private ? ? ? 私有權限 ?------ 只能在本類訪問到. (常用)

? ? protected和默認(default)的區別就是,protected可以在不同包的子類中訪問?

??? 封裝起來之后,通常是通過類中向外提供的特殊方法進行訪問,這樣就可以加入控制語句

public class Car {private String name;//向外提供set和get方法public String getName() {return name;}public void setName(String name) {//加入控制語句if(name.length()<5){this.name = name;}}
}

??代碼塊

??? 代碼塊就是在類中聲明的一個沒有名字的代碼塊,分為實例代碼塊和靜態代碼塊

??? 實例代碼塊: 在每次創建對象時執行,靜態代碼塊: 在類被加載時自動執行

?格式:?{ ?實例代碼塊內容 ?}? ? ? ? ? ? ? ? ? ?static { ? 靜態代碼塊內容 ? }

📖類什么時候會被加載?

??? 運行類中的main方法時.

??? 訪問類中的靜態成員變量或靜態成員方法時.

??? 創建類的對象時.

public class Car {{System.out.println("實例代碼塊");}static {System.out.println("靜態代碼塊");}public static void main(String[] args) {new Car();new Car();new Car();/*依次輸出:靜態代碼塊實例代碼塊實例代碼塊實例代碼塊*/}
}

?

??static關鍵字

??? ?static靜態的意思,static關鍵字可以修飾類中的成員變量,成員方法,代碼塊,內部類.

? (不能修飾構造方法)

??? static修飾成員變量:

靜態成員變量也稱類變量,在內存中只有一份,所有對象可以共享,一般情況下,將類中所有對象都相同的屬性設置為靜態的。

??? static修飾成員方法:

修飾的成員方法也稱為類方法,可以直接使用類名訪問,在靜態的方法中只能訪問靜態的成員變量,非靜態的方法中可以使用靜態的成員變量。

??? static關鍵字修飾的屬性特點:

? ?隨著類的加載而加載

? ?優先于對象存在

? ?靜態成員被所有對象共享

? ?可以直接使用類名訪問

注意:

??? 靜態的方法中,只能使用靜態的成員變量,因為他們都是隨著類的加載而加載的;

??? 一旦方法中使用了非靜態的成員變量,那么此方法就不能定義為靜態的;但非靜態的方法中可以使用靜態的成員變量

??思維導圖2

📖面向對象的三大特征:封裝,繼承,多態是本章的重點,第二部分將圍繞繼承和多態展開

??繼承?

??? 簡單來說,繼承就是將某一事物的共同屬性抽取出來單獨定義一個類 (父類),其它子類可以繼承父類,這樣不僅實現了代碼的復用,子類也可以擴展自己特有的功能。

?? ?舉個簡單的例子,現在有三個動物:貓,狗,鳥,它們都有一個共同屬性:名字name,那么就可以將name屬性定義在一個Animal動物類中,也就是父類,這樣就不需要在貓,狗,鳥類中分別定義name屬性了,它們只需繼承Animal父類即可。

?? ?繼承具有傳遞性,即一個類只能直接繼承一個類;但可以間接繼承多個類。

??? 繼承使用的是extends關鍵字,子類繼承父類后,擁有了父類的成員變量和成員方法

??? 子類不能繼承父類中的私有屬性

public class Cat extends Animal{//Cat繼承Animal的成員變量和成員方法,但不能訪問私有成員
}

📖當一個類沒有顯示繼承其他類的時候默認繼承object類,Object類是java類體系中最大的? ? ? ?類,Object類之上再也沒有別的類。

?

? 多態

??? 多態的使用前提是兩個類存在繼承關系

??? 多態也稱向上轉型,也就是將子類類型向上轉為父類類型

Animal dog = new Dog();

??? 多態實現了用父類類型表示任意子類類型的對象,利于程序擴展

📖通過一個案例給大家解釋下吧!

public class Animal {public void makeSound() {System.out.println("Animal is making a sound");}
}
public class Dog extends Animal{@Override//方法的重寫public void makeSound() {System.out.println("Dog is barking");}public static void main(String[] args) {Animal dog = new Dog();//現在我們可以使用Animal類的引用來引用Dog對象dog.makeSound();  //輸出Dog is barking}
}

在上述案例中,Animal引用的是一個Dog對象,但是調用的是Dog類中重寫的makeSound()方法,這就是多態的效果!

如果你對這個案例還有疑惑,這里有個小口訣:

編譯看左邊,運行看右邊

Animal dog = new Dog();

意思是:編譯時我們看左邊Animal類中的屬性,運行是看右邊Dog類中的內容

?

? 方法的重寫

在上述多態的案例中我們就用了方法的重寫,在子類Dog中對父類Animal中的makeSound方法進行了重寫,最終運行的是重寫后的方法中的內容。所以方法的重寫也就是當父類中方法的實現不能滿足子類需求時,在子類中對父類的方法進行重寫 / 覆蓋,這樣調用時就會調用子類中重寫的方法.

重寫時需要注意:?

??? 子類重寫的方法結構與父類方法的結果必須一致 ( 即方法名,參數列表,返回值類型必須一致)

????構造方法和靜態方法不能重寫,成員變量不存在重寫。

????使用 @Override 注解標簽



??結語:

? ? ???希望這篇關于對 Java面向對象的基礎知識總結 能對大家有所幫助,歡迎大佬們留言或私信與我交流~~學海漫浩浩,我亦苦作舟!大家一起學習,一起進步!

本人微信:? g2279605572?

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

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

相關文章

(全面)Nginx格式化插件,Nginx生產工具,Nginx常用命令

目錄 &#x1f3ab; 前言 &#x1f389; 開篇福利 &#x1f381; 開篇福利 x2 Double happiness # 介紹 # 地址 # 下載 &#x1f4bb; 命令及解析 # 整個文件系統中搜索名為nginx.conf的文件 # 編輯nginx.conf文件 # 重新加載配置文件 # 快速查找nginx.conf文件并使…

建筑施工突發事故應急處置vr安全培訓平臺

在不斷發展的時代背景下&#xff0c;掌握必要的應急安全知識已成為我們生活中不可或缺的一部分。由央企攜手我們華銳推出的3D線上應急宣教虛擬體驗館&#xff0c;標志著民眾應急安全教育的全新里程碑&#xff0c;不僅突破了傳統學習模式的局限&#xff0c;還讓每個人都能在靈活…

防火墻技術基礎篇:基于IP地址的轉發策略

防火墻技術基礎篇&#xff1a;基于IP地址的轉發策略的應用場景及實現 什么是基于IP地址的轉發策略&#xff1f; 基于IP地址的轉發策略是一種網絡管理方法&#xff0c;它允許根據目標IP地址來選擇數據包的轉發路徑。這種策略比傳統的基于目的地地址的路由更靈活&#xff0c;因…

深度學習之Python+OpenCV+Tensorflow實時人體檢測和計數

歡迎大家點贊、收藏、關注、評論啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代碼。 文章目錄 一項目簡介 二、功能三、系統四. 總結 一項目簡介 深度學習之PythonOpenCVTensorflow實時人體檢測和計數項目簡介 一、項目背景與意義 隨著科技的不斷發展&#xff…

Java - JsonPath 特殊場景解決方案

我們先看下JSONPath的使用&#xff0c;這里使用的是 GitHub - json-path/JsonPath: Java JsonPath implementation&#xff0c;其README中已經提供了相關的介紹和使用示例&#xff0c;這里再簡單介紹下&#xff0c;我們這里直接使用其中的示例數據。 {"store": {&quo…

macOS 安裝a d b

brew install android-platform-tools

Go微服務: 日志系統ELK的應用

概述 基于前文&#xff0c;我們已經了解并搭建完成ELK的所有環境了&#xff0c;現在我們來結合應用程序來使用ELK參考前文&#xff1a;https://active.blog.csdn.net/article/details/138898538 封裝日志模塊 在通用工具模塊: gitee.com/go-micro-services/common 這個包是通…

CTFHUB技能樹——SSRF(三)

目錄 URL Bypass 數字IP Bypass 302跳轉 Bypass DNS重綁定 Bypass SSRF繞過方法&#xff1a; &#xff08;1&#xff09; http://abc.com127.0.0.1 &#xff08;2&#xff09;添加端口號 http://127.0.0.1:8080 &#xff08;3&#xff09;短地址 htt…

限制U盤使用:企業數據安全的軟件解決方案

在當今數字化辦公環境中&#xff0c;U盤作為一種便捷的數據傳輸工具&#xff0c;其使用在企業內部非常普遍。然而&#xff0c;U盤的不當使用也給企業數據安全帶來了巨大風險。為了防止數據泄露和病毒傳播&#xff0c;企業需要采取有效的軟件解決方案來限制U盤的使用。本文將探討…

linux使用dockerCompose腳本化部署鏡像

1.根據實際修改docker-compose.yml文件&#xff1a; version: 3.5 services:#mysql數據庫腳本mysql:image: 鏡像名:版本 #需要查看本地鏡像進行填寫。同下container_name: mysql #容器名&#xff0c;同下restart: alwaysports:- 3306:3306 #第一個3306為主機…

Java中解決跨域的幾種方法

一、 什么是跨域(同源策略) 同源的定義&#xff1a;如果兩個頁面的協議&#xff0c;端口&#xff08;如果有指定&#xff09;和主機都相同&#xff0c;則兩個頁面具有相同的源 1&#xff0c;用戶在瀏覽器輸入的URL中包含的協議、域名、端口都完全相同。如果有一項不同&#xf…

【python005】python批量、動態調參請求接口(已更新)

1.熟悉、梳理、總結項目研發實戰中的Python開發日常使用中的問題。隨著版本更新,做了一些變動,如商業化限制,取消一些語法等。 2.歡迎點贊、關注、批評、指正,互三走起來,小手動起來! 文章目錄 1.背景介紹2.單次接口請求總結代碼片3.批量循環接口請求總結代碼片4.持久化`…

機器人流程自動化與低代碼流程自動化:技術革新的雙重驅動

在數字化時代的浪潮中&#xff0c;企業對于高效、智能的工作流程的需求日益增強。在這一背景下&#xff0c;機器人流程自動化&#xff08;RPA&#xff09;和低代碼流程自動化&#xff08;Low-Code Automation&#xff09;應運而生&#xff0c;成為推動企業數字化轉型的重要力量…

docker容器安裝mysql

linux: centOS-7 hadoop: 3.3.6 前置章節&#xff1a; (圖文并茂)基于CentOS-7搭建hadoop3.3.6大數據集群-CSDN博客 可選&#xff1a;zookeeper安裝教程-CSDN博客 1.安裝docker 1.1 添加docker的repo源 sudo yum-config-manager --add-repo http://mirrors.aliyun.com/…

一個月速刷leetcodeHOT100 day08 兩道DP題 一道子串

和為k的子數組 中等 提示 給你一個整數數組 nums 和一個整數 k &#xff0c;請你統計并返回 該數組中和為 k 的子數組的個數 。 子數組是數組中元素的連續非空序列。 示例 1&#xff1a; **輸入&#xff1a;**nums [1,1,1], k 2 **輸出&#xff1a;**2 示例 2&#xff1a; *…

集合、Collection接口特點和常用方法

1、集合介紹 對于保存多個數據使用的是數組&#xff0c;那么數組有不足的地方。比如&#xff0c; 長度開始時必須指定&#xff0c;而且一旦制定&#xff0c;不能更改。 保存的必須為同一類型的元素。 使用數組進行增加/刪除元素的示意代碼&#xff0c;也就是比較麻煩。 為…

一種簡單實用的ollvm反混淆的方案與源碼

我是一名從事反欺詐&風控&設備指紋相關的工作&#xff0c;最近對ollvm的如何逆向的問題進行了學習與思考。 ollvm是一個開源免費的so混淆工具&#xff0c;對于逆向的小白來說簡直是災難性的存在。 這個例子是超簡單&#xff0c;我想每個人都可以學會跟掌握&#xff0c;…

RustGUI學習(iced/iced_aw)之擴展小部件(二十五):如何使用tab部件來創建tab多頁面切換?

前言 本專欄是學習Rust的GUI庫iced的合集,將介紹iced涉及的各個小部件分別介紹,最后會匯總為一個總的程序。 iced是RustGUI中比較強大的一個,目前處于發展中(即版本可能會改變),本專欄基于版本0.12.1. 概述 這是本專欄的第二十五篇,主要講述tab頁面切換部件的使用,會結…

[linux] bash中的單引號(‘)和雙引號(“)

在命令行中&#xff0c;單引號()和雙引號(")在某些情況下會有不同的效果&#xff0c;尤其是在涉及bash變量和特殊字符的解析時。在你給出的兩個命令中&#xff1a; ps -ef|grep "tokenize"|grep -v grep|awk {print $2} 和 ps -ef|grep "tokenize"…