07. Java中的类和对象(嗜血无敌战神破解版)
Java中的類和對象
- 1.Java中類定義和使用
- 2.類的實例化
- 2.1什么是實例化
- 2.2訪問類中的屬性和方法
- 2.3成員變量默認(rèn)值
- 3.this引用
- 3.1為什么要用this引用
- 3.2this引用特性
- 3.3 this的用法
- 4.對象的構(gòu)造及初始化
- 4.1構(gòu)造方法
- 4.2 實例化對象時,必須的兩步
- 4.3創(chuàng)建構(gòu)造方法的快捷鍵
- 4.4 this調(diào)用構(gòu)造方法
- 4.5 初始化對象
- 5. 成員變量的打印(快捷鍵)
- 6.封裝
- 6.1 public 和 private 的區(qū)別:
- 6.2 成員變量接口的提供 快捷鍵
- 6.3 包訪問權(quán)限(默認(rèn)權(quán)限)
- 6.3.1 什么是包?
- 6.3.2 導(dǎo)入包中的類
- 6.3.3 如何自定義包?
- 6.3.4 包訪問權(quán)限
- 6.3.5 public ,private ,默認(rèn)權(quán)限 的權(quán)限總結(jié):
- 6.3.6 常見的包
- 7.static成員
- 7.1 static 修飾成員變量和成員方法
- 7.2 類變量和類方法
- 7.3 訪問類方法和類變量
- 7.4 解釋一個現(xiàn)象——之前寫的函數(shù)都用 static 修飾
- 8. 代碼塊
- 8.1 代碼塊概念以及分類
- 9. 內(nèi)部類
- 9.1 內(nèi)部類的分類
- 9.2 實例內(nèi)部類
- 9.3 靜態(tài)內(nèi)部類
1.Java中類定義和使用
public class Student{//字段(屬性)或成員變量public String name;public String gender;public double score;//行為 或者 成員方法public void DoClass(){}public void DoHomework(){}public void Exam(){}}注意事項:
2.類的實例化
2.1什么是實例化
定義了一個類就相當(dāng)于定義了一個新的數(shù)據(jù)類型,與int,double類似。
用類類型創(chuàng)建對象的過程就叫做實例化。
2.2訪問類中的屬性和方法
class Student{//字段(屬性)或成員變量————定義在類的內(nèi)部,方法的外部public String name;public String gender;public double score;//行為 或者 成員方法public void DoClass(){System.out.println(name+"正在上課");}public void DoHomework(){System.out.println(name+"正在寫作業(yè)");}public void Exam(){System.out.println(name+"得考試結(jié)果為"+score);} } public class TestDemo {public static void main(String[] args) {Student student=new Student();student.name="李飛飛";student.score=78.8;student.DoClass();student.Exam();} }2.3成員變量默認(rèn)值
class Student{//字段(屬性)或成員變量————定義在類的內(nèi)部,方法的外部public String name;public String gender;public double score;public boolean boy;//行為 或者 成員方法public void DoClass(){System.out.println(name+"正在上課");}public void DoHomework(){System.out.println(name+"正在寫作業(yè)");}public void Exam(){System.out.println(name+"得考試結(jié)果為"+score);}public void Show(){System.out.println("名字:"+name+" 年級"+gender+" 成績"+score+" 是不是男孩"+boy);} } public class TestDemo {public static void main(String[] args) {Student student=new Student();student.Show();} }
當(dāng)成員變量沒有初始化值的時候,每個成員變量都是它對應(yīng)的 0 值:
引用類型對應(yīng)的值是 null
boolean類型對應(yīng)的是false
char 對應(yīng)的是一個空格
3.this引用
3.1為什么要用this引用
當(dāng)形參名不小心與成員變量名相同時:
public class MyDate {public int year;public int month;public int day;/*設(shè)置日期*/public void setDate(int year,int month,int day){//遵循局部變量優(yōu)先原則year=year;month=month;day=day;}public void printDate(){System.out.println(year+"年"+month+"月"+day+"日");}public static void main(String[] args) {MyDate myDate=new MyDate();myDate.setDate(2022,3,25);myDate.printDate();} }
此時就出現(xiàn)了一點不對勁,那怎么解決呢?
加 this 即可
此時的情況為什么好起來了呢,我們來調(diào)試看一下:
通過調(diào)試可以發(fā)現(xiàn),this代表當(dāng)前對象的引用。
此外,this 本質(zhì)上是一個隱式參數(shù):
this 到目前為止,我們知道的作用有:
3.2this引用特性
3.3 this的用法
4.對象的構(gòu)造及初始化
4.1構(gòu)造方法
構(gòu)造方法是一個特殊的成員方法,名字必須與類名相同,在創(chuàng)建對象時,由編譯器自動生調(diào)用,并且在整個對象的生命周期只能調(diào)用一次
構(gòu)造方法的特點:
比如:
4.2 實例化對象時,必須的兩步
看一個例子:
運行結(jié)果:
從結(jié)果來看,在實例化對象時,會調(diào)用一個不帶參數(shù)的構(gòu)造方法。
有時候我們并沒有寫構(gòu)造方法,但是也能運行成功,這是為什么呢?
多個構(gòu)造方法之間形成重載
4.3創(chuàng)建構(gòu)造方法的快捷鍵
鼠標(biāo)右鍵————》Generate————》Constructor
—————》按住ctrl,選中要作為參數(shù)的成員變量
效果如下:
4.4 this調(diào)用構(gòu)造方法
注意:
結(jié)果分析:
4.5 初始化對象
比如:多個線程同時申請對象,JVM要保證給對象分配的空間不沖突
5. 成員變量的打印(快捷鍵)
先用起來
class Student{public int age;public double score;public String name;@Overridepublic String toString() {return "Student{" +"age=" + age +", score=" + score +", name='" + name + '\'' +'}';} } public class TestDemo {public static void main(String[] args) {Student student=new Student();System.out.println(student);} }快捷鍵使用:
鼠標(biāo)右鍵————》Generate————》toString
—————》按住ctrl,選中要作為參數(shù)的成員變量
6.封裝
6.1 public 和 private 的區(qū)別:
例:private的使用
class Student{private int age;private double score;private String name;public void setName(String name){this.name=name;}public String getName(){return name;} } public class TestDemo {public static void main(String[] args) {Student student=new Student();student.setName("李飛飛");String name=student.getName();System.out.println(name);} }6.2 成員變量接口的提供 快捷鍵
鼠標(biāo)右鍵————》Generate————》Getter and Setter
—————》按住ctrl,選中要作為參數(shù)的成員變量
效果展示:
class Student{private int age;private double score;private String name;public int getAge() {return age;}public void setAge(int age) {this.age = age;}public double getScore() {return score;}public void setScore(double score) {this.score = score;}public String getName() {return name;}public void setName(String name) {this.name = name;} } public class TestDemo {public static void main(String[] args) {Student student=new Student();} }6.3 包訪問權(quán)限(默認(rèn)權(quán)限)
6.3.1 什么是包?
6.3.2 導(dǎo)入包中的類
Java 中已經(jīng)提供了很多現(xiàn)成的類供我們使用. 例如Date類:可以使用 java.util.Date 導(dǎo)入 java.util 這個包中的 Date類.
public class TestDemo {public static void main(String[] args) {java.util.Date date=new java.util.Date();System.out.println(date.getTime());//getTime( )———獲取時間戳} }上面的這種寫法雖然也可以導(dǎo)入包中的類,但是非常麻煩,所以我們通常用使用 import語句導(dǎo)入包.
import java.util.Date; public class TestDemo {public static void main(String[] args) {Date date=new Date();System.out.println(date.getTime());} }當(dāng)需要導(dǎo)入多個包時,如果一個一個導(dǎo)入,也可能比較麻煩,所以可以用 * 表示導(dǎo)入所有的包:
但是呢,有時候調(diào)用的包里面會有名稱相同的類,此時編譯器就不知道是用的哪一個包中的類:
此時就得調(diào)用哪一個包:
6.3.3 如何自定義包?
1.創(chuàng)建包的步驟:
2.控制包文件的顯示模式:
3.調(diào)用自定義包:
src文件下的 TestDemo 調(diào)用自定義包中的TestDemo時,兩個文件類名重復(fù)了,所以得直接指定
src文件下的 TestDemo 調(diào)用自定義包中的TestDemo1時,就可以用 import 的方法導(dǎo)入自定義包
自定義包的基本原則:
6.3.4 包訪問權(quán)限
在包中定義一個包訪問權(quán)限的變量 a
在同一個包中訪問 a 時:
在別的包中訪問 a 時:
通過上面的示范可以知道,包訪問權(quán)限的變量只能在同一個包中訪問,在不同包中就會訪問受限。
6.3.5 public ,private ,默認(rèn)權(quán)限 的權(quán)限總結(jié):
int a=199;//默認(rèn)權(quán)限——————只能在這個包當(dāng)中使用public int b=200;//可以隨便訪問private int c=100;//只能在同一個類中訪問6.3.6 常見的包
7.static成員
7.1 static 修飾成員變量和成員方法
static修飾成員變量時:
7.2 類變量和類方法
字段/屬性/成員變量:
方法/成員方法:
在下面的JVM中,類變量存在方法區(qū)
(其實,在JVM中,方法區(qū)放在對里面,但是兩者在邏輯上同等級的)
注意:
7.3 訪問類方法和類變量
1.可以通過對象調(diào)用,也可以通過類名.靜態(tài)方法名(…)方式調(diào)用,更推薦使用后者
class Student{public String name;public int age;public double score;//public String classes;public static String classes;public static void doClass(){System.out.println("正在上課");} } public class TestDemo {public static void main(String[] args) {Student student=new Student();student.classes="三班";//通過對象調(diào)用Student.doClass();//通過類名.靜態(tài)方法名(...)方式調(diào)用Student.classes="二班";//通過類名.靜態(tài)變量 方式調(diào)用} }2.靜態(tài)方法沒有隱藏的this引用參數(shù),因此不能在靜態(tài)方法中訪問任何非靜態(tài)成員變量
7.4 解釋一個現(xiàn)象——之前寫的函數(shù)都用 static 修飾
之前用static修飾時,在 main 中直接用函數(shù)名就可以調(diào)用 func函數(shù)
當(dāng)沒被static修飾時,就得用以下的方式調(diào)用 func 函數(shù)
原因分析:
main函數(shù)是被static修飾的,所以main的使用不依賴于對象
8. 代碼塊
8.1 代碼塊概念以及分類
使用 {} 定義的一段代碼稱為代碼塊。根據(jù)代碼塊定義的位置以及關(guān)鍵字,又可分為以下四種:
普通代碼塊 :一般不會用
構(gòu)造塊 /實例代碼塊:一般用來初始化普通成員變量
靜態(tài)塊 :一般用于初始化靜態(tài)的數(shù)據(jù)
同步代碼塊(后續(xù)講解多線程部分再談)
運行結(jié)果:
優(yōu)先級:靜態(tài)代碼塊 > 實例代碼塊 > 構(gòu)造方法
當(dāng)有多個靜態(tài)代碼塊時,運行的先后順序由代碼的先后順序決定
9. 內(nèi)部類
內(nèi)部類就相當(dāng)于外部類的一個成員,實例內(nèi)部類就相當(dāng)于普通成員,其依賴于對象。
靜態(tài)內(nèi)部類就相當(dāng)于靜態(tài)成員,其不依賴于對象
9.1 內(nèi)部類的分類
目前先知道下面兩種即可。
9.2 實例內(nèi)部類
實例內(nèi)部類的問題總結(jié):
9.3 靜態(tài)內(nèi)部類
靜態(tài)內(nèi)部類中的問題總結(jié):
總結(jié)
以上是生活随笔為你收集整理的07. Java中的类和对象(嗜血无敌战神破解版)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 前端学习(2614):action的方法
- 下一篇: java美元兑换,(Java实现) 美元