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