【JavaSE_08】Java中static、继承、重写
#一、Static
學(xué)習(xí)靜態(tài)這個(gè)關(guān)鍵字,關(guān)鍵是抓住兩個(gè)點(diǎn):
1,關(guān)注其語法特點(diǎn)
2,關(guān)注其使用場景
案例講解:
我們先從靜態(tài)變量開始,當(dāng)一個(gè)成員變量加上static修飾之后,會(huì)是一個(gè)什么效果?
比如創(chuàng)建一個(gè)老師類(姓名,工資,學(xué)校),然后我們把學(xué)校設(shè)置為靜態(tài)變量,來對(duì)比跟其他變量的差別
靜態(tài)的使用:
##靜態(tài)變量
靜態(tài)變量所有對(duì)象共享一份,非靜態(tài)的成員變量,每個(gè)對(duì)象獨(dú)享一份
靜態(tài)變量和普通成員變量的區(qū)別(局部變量和成員變量的區(qū)別)
歸屬不同
成員變量:對(duì)象
靜態(tài)變量:類
調(diào)用的方式不同
成員變量:對(duì)象.成員變量
靜態(tài)變量:類名.靜態(tài)變量
內(nèi)存出現(xiàn)的時(shí)機(jī)不同
成員變量:對(duì)象創(chuàng)建
靜態(tài)變量:load 類的字節(jié)碼文件,優(yōu)先于成員變量
內(nèi)存的位置不同
成員變量:堆
靜態(tài)變量:方法區(qū)-靜態(tài)區(qū)
##靜態(tài)代碼塊
執(zhí)行時(shí)機(jī):當(dāng)我們的類被加載的時(shí)候就會(huì)被執(zhí)行,不管是否創(chuàng)建對(duì)象
執(zhí)行次數(shù):整個(gè)過程僅執(zhí)行一次,不管創(chuàng)建多少對(duì)象都只執(zhí)行一次
##靜態(tài)方法
可以通過對(duì)象或者類名來調(diào)用,但是建議用類名來調(diào)用
靜態(tài):
- 1,靜態(tài)變量,所有對(duì)象共享一份,訪問方式:類名.變量名
- 2,靜態(tài)代碼塊,類加載的時(shí)候就自動(dòng)執(zhí)行,而且只執(zhí)行一次
- 3,靜態(tài)方法,訪問方式:類名.方法名()
##實(shí)際應(yīng)用場景:
假設(shè)現(xiàn)在項(xiàng)目中有多處地方需要做狀態(tài)判斷,以作為下一步操作的依據(jù),這種情況,我們先來寫代碼,然后再引出問題
創(chuàng)建工具類
(1),解決數(shù)據(jù)匹配問題
(2),直接通過類名調(diào)用方法,無需創(chuàng)建對(duì)象
#二、繼承
##1.繼承-語法
繼承解決了什么樣的問題?
Java里面實(shí)現(xiàn)繼承的語法是怎么樣的?
案例分析:
開發(fā)一個(gè)學(xué)員管理系統(tǒng),這里面會(huì)涉及到老師和學(xué)生的角色,我們來看看這里面會(huì)出現(xiàn)什么問題?
2個(gè)小目標(biāo):
1,掌握繼承的基本使用
2,掌握繼承的語法細(xì)節(jié)(筆試題)
總結(jié)繼承中,構(gòu)造方法的注意事項(xiàng)(Super關(guān)鍵字的使用)
this()//調(diào)用自身的構(gòu)造方法
super()//調(diào)用父類的構(gòu)造方法
this.someMethod()//父類繼承過來的方法+自身的方法
super.someMethod()//父類繼承過來的方法
Java不支持多繼承,但支持多重繼承,何為多重繼承?
多繼承:不能一個(gè)類繼承多個(gè)類
比如:public class Student extends SysUser,Other
多重繼承:爺爺—爸爸----孫子
問題:
1,繼承,構(gòu)造方法會(huì)不會(huì)被繼承?不會(huì)
2,說說this和super的區(qū)別?
##2.繼承-方法的重寫
為什么會(huì)有方法重寫?
學(xué)生和老師都有自己各自獨(dú)特的特性,這個(gè)時(shí)候父類的展示信息方法不能滿足子類的需求
練習(xí):
學(xué)生類和老師類分別重寫其父類的showInfo方法
方法重寫要注意的規(guī)則
@Override注解的作用
經(jīng)典面試題:
重寫和重載的區(qū)別?Override vs overload
重寫:
重寫,出現(xiàn)在父類和子類之間
重寫的方法方法名,參數(shù),返回值類型都要一樣,訪問權(quán)限只能大于或等于父類的訪問權(quán)限,一般我們都是設(shè)置一樣的
重載:
重載,出現(xiàn)在同一個(gè)類里面,方法名要一樣,參數(shù)列表不同
System.out.println(1);
System.out.println(1.1);
System.out.println(“hello”);
##3.繼承-不得不說的Object
從Object的兩個(gè)方法來說重寫,一個(gè)是toString(),一個(gè)是equals()
案例一:
String s = “haha”;
System.out.println(s);
Student stu = new Student(“zhangsan”);
System.out.println(stu);
案例二:equals
經(jīng)典面試題:
==和equals的區(qū)別
#三、Final
首先,掌握final關(guān)鍵字的特性,最終的
(1),修飾類:類將不能被繼承
(2),修飾屬性:把變量變成常量,存儲(chǔ)著一堆常量的類,我們就稱為常量類
(3),修飾方法:控制方法不能被覆蓋
其次,掌握在其實(shí)際開發(fā)中的應(yīng)用
完善制作工具類
final修飾的類不允許有子類
final修飾的變量只能賦值一次,—》常量
final修飾的方法,那么這個(gè)方法將不允許重寫–改變
#四、包
基本作用
最基本的作用:避免類重名的問題
項(xiàng)目開發(fā)中的作用:
更好來管理我們的類和文件,同時(shí)更好讓多人協(xié)助開發(fā)
延伸問題:
包名本身如何確保唯一性
域名 www.baidu.com
域名倒過來:com.baidu.部門名稱.項(xiàng)目名稱.子系統(tǒng).子模塊
com.baidu.
總結(jié)
以上是生活随笔為你收集整理的【JavaSE_08】Java中static、继承、重写的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【JavaSE_07】Java中类和对象
- 下一篇: 【JavaSE_08】Java中stat