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