Java基础day7
Java基礎
- Java基礎day7-面向對象
- 1 類和對象
- 1.1 類和對象的理解
- 1.2 類的定義
- 對象的使用
- 1.4 學生對象-練習
- 2. 對象內存圖
- 3. 成員變量和局部變量
- 4. 封裝
- 4.1 private關鍵字
- 4.2 private的使用
- 4.3 this關鍵字
- 4.4 this內存原理
- 4.5 封裝思想
- 5. 構造方法
- 5.1 構造方法概述
- 5.2 構造方法的注意事項
- 5.3 標準類制作
Java基礎day7-面向對象
1 類和對象
1.1 類和對象的理解
類:類是對現實生活中一類具有共同屬性和行為的事物的抽象,它是對象的數據類型,類是具有相同屬性和行為的一組對象的集合,簡單來說,類是對現實事物的一種描述。
類由屬性和行為組成
類是對事物的一種描述,對象則為具體存在的事物
1.2 類的定義
類的組成是由屬性和行為兩部分組成
- 屬性:在類中通過成員變量來體現(方法外的變量)
- 行為:在類中通過成員方法來體現(去掉static)
類的定義步驟:
定義類
編寫類的成員變量
編寫類的成員方法
對象的使用
創建對象的格式:
類名 對象名 = new 類名();
調用成員的格式:
對象名.成員變量
對象名.成員方法()
1.4 學生對象-練習
需求:首先定義一個學生類,然后定義一個學生測試類,在學生測試類中通過對象完成成員變量和成員方法的使用
代碼實現:
class Student{//定義成員變量String name;int age;//定義成員方法public void study(){System.out.println("好好學習,天天向上");}public void dohomework(){System.out.println("鍵盤敲爛,月薪過萬");} } //測試類 public class test {public static void main(String[] args) {//創建對象Student s = new Student();//使用對象System.out.println(s.name+","+s.age);s.name = "林青霞";s.age = 30;System.out.println(s.name+","+s.age);s.study();s.dohomework();} }2. 對象內存圖
單對象和多對象內存圖
- 當多個對象的引用指向同一個內存空間(變量所記錄的地址值是一樣的)
- 只要有任何一個對象修改了內存中的數據,隨后,無論使用哪一個對象進行數據獲取,都是修改后的數據。
3. 成員變量和局部變量
- 類中位置不同:成員變量(類中方法外)局部變量(方法內部或方法聲明上)
- 內存中位置不同:成員變量(堆內存)局部變量(棧內存)
- 生命周期不同:成員變量(隨著對象的存在而存在,隨著對象的消失而消失)局部變量(隨著方法的調用而 存在,醉著方法的調用完畢而消失)
- 初始化值不同:成員變量(有默認初始化值)局部變量(沒有默認初始化值,必須先定義,賦值才能使用)
4. 封裝
4.1 private關鍵字
private是一個修飾符,可以用來修飾成員(成員變量,成員方法)
-
被private修飾的成員,只能在本類進行訪問,針對private修飾的成員變量,如果需要被其他類使用,提供相 應的操作
- 提供“get變量名()”方法,用于獲取成員變量的值,方法用public修飾
- 提供“set變量名(參數)”方法,用于設置成員變量的值,方法用public修飾
示例代碼:
class Student {//定義成員變量String name;private int age;//定義成員方法public void setage(int a) {if (a > 120 || a < 0) {System.out.println("你輸入的年紀有誤");} else {age = a;}}public int getage(){return age;}public void show() {System.out.println(name + "," + age);} } //定義測試類 public class test {public static void main(String[] args) {//創建對象Student s = new Student();//使用對象s.name = "林青霞";s.setage(30);s.show();} }4.2 private的使用
需求:定義標準的學生類,要求name和age使用private修飾,并提供set和get方法以及便于顯示數據的show方法,測試類中創建對象并使用,最終控制臺輸出 林青霞,30
class Student {//定義成員變量private String name;private int age;//定義成員方法public void setname(String n){name = n;}public String getname(){return name;}public void setage(int a) {if (a > 120 || a < 0) {System.out.println("你輸入的年紀有誤");} else {age = a;}}public int getage(){return age;}public void show() {System.out.println(name + "," + age);} } public class test {public static void main(String[] args) {//創建對象Student s = new Student();//使用對象s.setname("林青霞");s.setage(30);s.show();System.out.println(s.getage()+s.getname());} }4.3 this關鍵字
this修飾的變量用于指代成員變量,其主要作用是(區分局部變量和成員變量的重名問題)
- 方法的形參如果與成員變量同名,不帶this修飾的變量指的是形參,而不是成員變量
- 方法的形參沒有與成員變量同名,不帶this修飾的變量指的是成員變量
4.4 this內存原理
this代表當前調用方法的引用,哪個對象調用的方法,this就代表哪一個對象
4.5 封裝思想
5. 構造方法
5.1 構造方法概述
構造方法是一種特殊的方法
作用:創建對象 Student stu = new Student();
格式:
功能:主要是完成對象數據的初始化
示例代碼:
5.2 構造方法的注意事項
-
構造方法的創建
如果沒有定義構造方法,系統將給出一個默認的無參數構造方法 如果定義了構造方法,系統將不再提供默認的構造方法
-
構造方法的重載
如果自定義了帶參構造方法,還要使用無參數構造方法,就必須再寫一個無參數構造方法
-
推薦的使用方式
無論是否使用,都手工書寫無參數構造方法
-
重要功能!
可以使用帶參構造,為成員變量進行初始化
代碼實現:
class Student {private String name;private int age;public Student() {}public Student(String name) {this.name = name;}public Student(int age) {this.age = age;}public Student(String name, int age) {this.name = name;this.age = age;}public void show() {System.out.println(name + "," + age);} } public class test{public static void main(String[] args) {//創建對象Student s1= new Student();s1.show();Student s2= new Student("林青霞");s2.show();Student s3= new Student(30);s3.show();Student s4= new Student("林青霞",30);s4.show();} }5.3 標準類制作
需求:定義標準學生類,要求分別使用空參和有參構造方法創建對象,空參創建的對象通過setXxx賦值,有參創建的對象直接賦值,并通過show方法展示數據。
示例代碼:
class Student {private String name;private int age;public Student() {}public Student(String name, int age) {this.name = name;this.age = age;}public void setname(String name) {this.name = name;}public String getname() {return name;}public void setage(int age) {this.age = age;}public int getage() {return age;}public void show() {System.out.println(name + "," + age);} } public class test{public static void main(String[] args) {Student s1 = new Student();s1.setname("林青霞");s1.setage(30);s1.show();Student s2 = new Student("林青霞",30);s1.show();}}總結
以上是生活随笔為你收集整理的Java基础day7的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 学习Spring Boot:(十八)Sp
- 下一篇: Java基础day8