柚子快報(bào)激活碼778899分享:【JavaSE】類與對象(二)
柚子快報(bào)激活碼778899分享:【JavaSE】類與對象(二)
目錄
一、封裝二、包2.1 包的概念:2.2 導(dǎo)包:2.3 idea中自定義包2.4 常見包
三、static成員3.1 靜態(tài)成員變量特性3.2 靜態(tài)成員方法特性3.3 應(yīng)用場景3.4 static成員變量的初始化
四、代碼塊4.1 靜態(tài)代碼塊4.2 構(gòu)造代碼塊4.3 靜態(tài)代碼塊,構(gòu)造代碼塊,構(gòu)造方法調(diào)用順序
五、對靜態(tài)static的我的理解
一、封裝
封裝作為面向?qū)ο笕筇匦裕ǚ庋b,繼承,多態(tài))之一,那如何實(shí)現(xiàn)封裝性的呢?就又得拿出上面的訪問修飾限定符的圖 public: 就是在任何地方都可以訪問 protected: 涉及子類在介紹繼承時(shí)詳細(xì)介紹 default: 什么都不寫時(shí)默認(rèn)權(quán)限,在當(dāng)前包下面訪問 protected: 在當(dāng)前類中可以訪問。
二、包
2.1 包的概念:
包就像我們創(chuàng)建的文件夾一樣,里面包含多種類。跟c語言的頭文件差不多。
2.2 導(dǎo)包:
那在C語言中我們要導(dǎo)入頭文件,自然在Java中使用Java自帶的類也要導(dǎo)包(這種意義上導(dǎo)包就是要寫到類),使用 關(guān)鍵字import導(dǎo)包,如下:
import java.util.Date;
public class Test {
public static void main(String[] args) {
Date date = new Date();// 得到一個(gè)毫秒級別的時(shí)間戳
System.out.println(date.getTime());
}
}
當(dāng)我們需要使用該包下的其他類時(shí)Java中有一個(gè)簡便寫法, import java.util.*;但是如此寫就會在有些情況下出先bug,例如 util 和 sql 中都存在一個(gè) Date 這樣的類, 此時(shí)就會出現(xiàn)歧義, 編譯就會出錯(cuò) 所以這種導(dǎo)包不建議。 在這種情況下要解決就需要將包在程序?qū)懮?java.util.Date date = new java.util.Date();這不是多此一舉嗎。
2.3 idea中自定義包
包名采用小駝峰(首單詞首字母小寫,其余單詞首字母大寫) 1.鼠標(biāo)右擊文件 2.左擊new 3.左擊package
2.4 常見包
java.lang:系統(tǒng)常用基礎(chǔ)類(String、Object),此包從JDK1.1后自動導(dǎo)入,不用輸。java.lang.re?ect:java 反射編程包;java.net:進(jìn)行網(wǎng)絡(luò)編程開發(fā)包。java.sql:進(jìn)行數(shù)據(jù)庫開發(fā)的支持包。java.util:是java提供的工具程序包。(集合類等) 非常重要java.io:I/O編程開發(fā)包。
三、static成員
成員變量/方法被static修飾就是靜態(tài)成員變量/方法, 這樣的成員是所有對象共用的
3.1 靜態(tài)成員變量特性
不屬于某個(gè)具體的對象,是類的屬性,所有對象共享的,不存儲在某個(gè)對象的空間中既可以通過對象訪問,也可以通過類名訪問,但一般更推薦使用類名訪問類變量存儲在方法區(qū)當(dāng)中生命周期伴隨類的一生(即:隨類的加載而創(chuàng)建,隨類的卸載而銷毀)
3.2 靜態(tài)成員方法特性
不屬于某個(gè)具體的對象,是類方法可以通過對象調(diào)用,也可以通過類名.靜態(tài)方法名(…)方式調(diào)用,更推薦使用后者不能在靜態(tài)方法中直接訪問任何非靜態(tài)成員變量,要訪問就必須要實(shí)例化對象來通過對象調(diào)用。例如:
class Student{
private String name = "zhangsan";
public static fun(){
Student student = new Student();
student.name = "lisi";
}
}
3.3 應(yīng)用場景
在這一個(gè)類中實(shí)例化任何對象時(shí),每個(gè)對象都一樣的成員變量/方法就可以用static來修飾,例如要對一個(gè)班級中的同學(xué)寫成績管理系統(tǒng),那他們的班級就是一樣的就可以用static修飾。
3.4 static成員變量的初始化
就地初始化:在定義時(shí)直接給出初始值public static className = "一班";默認(rèn)初始化通過構(gòu)造方法中進(jìn)行賦值通過set方法進(jìn)行賦值靜態(tài)代碼塊初始化
四、代碼塊
代碼塊(用{}括起來的代碼都是代碼塊)有很多種,在這就先介紹兩種。
4.1 靜態(tài)代碼塊
定義形式很簡單,定義在類內(nèi),成員方法外,如下
static {
//代碼
}
1.它一般用于初始化靜態(tài)成員變量。 2.只要類加載就會調(diào)用執(zhí)行,且執(zhí)行一次。 3.如果有多個(gè)靜態(tài)代碼塊且里面對同一變量進(jìn)行了操作,就以最后一個(gè)為準(zhǔn)。例如:
class Student{
private String className = "一班";
static{
className = "二班";
}
}
//這種結(jié)果就是二班
class Student{
static{
className = "二班";
}
private String className = "一班";
}
//這種結(jié)果就是一班
4.2 構(gòu)造代碼塊
也叫非靜態(tài)代碼塊,還叫實(shí)例代碼塊。定義在類內(nèi),成員方法外。
class Student{
private String name;
private String className = "一班";
static{
className = "二班";
}
{
name = "zhangsan";
}
}
特性: 1.一般用來初始化非靜態(tài)成員變量 2.只要實(shí)例化對象就會調(diào)用執(zhí)行。 3.如果有多個(gè)靜態(tài)代碼塊且里面對同一變量進(jìn)行了操作,就以最后一個(gè)為準(zhǔn)。
4.3 靜態(tài)代碼塊,構(gòu)造代碼塊,構(gòu)造方法調(diào)用順序
先執(zhí)行靜態(tài)代碼塊且只執(zhí)行一次, 在執(zhí)行構(gòu)造代碼塊, 最后執(zhí)行構(gòu)造方法。
五、對靜態(tài)static的我的理解
那就是static靜態(tài)的東西不依賴對象,它的調(diào)用就直接用類, 在靜態(tài)中要想調(diào)用非靜態(tài)的就必須要實(shí)例化對象來通過對象調(diào)用。
柚子快報(bào)激活碼778899分享:【JavaSE】類與對象(二)
參考鏈接
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。