0711 第八次作業
一、面向對象
1.局部變量和成員變量的區別:
(1)在類中的位置不同:
局部變量:在方法中定義或在方法聲明中定義
成員變量:在類中方法外定義
(2)在內存中的位置不同:
局部變量:在棧中(屬於方法,方法進棧)
成員變量:在堆中(屬於對象,對象進堆)
(3)生命周期不同
局部變量:隨著方法的調用而存在,方法彈棧後消失
成員變量:隨著對象的創建而存在,隨著對象的消失而消失
(4)初始化值不同
局部變量:沒有默認的初始化值,使用前必須先定義和賦值
成員變量:有默認的初始化值
2.什麽是匿名對象?調用場景是什麽?
匿名對象即是沒有名字的對象;
匿名對象在調用中只能使用一次,好處是節省代碼,不適合多次調用。匿名對象調用完畢後就是垃圾,可以被垃圾回收器回收。
3.封裝是什麽?java中封裝的提現有哪些?舉例說明:
封裝是指隱藏對象的屬性和實現細節,僅對外提供公共訪問方式。
在java中,可以使用關鍵字private進行封裝:
例:通過private關鍵字對類StudentInformation中的成員變量age進行封裝,則在類class中需通過方法setAge對age進行修改,不能直接訪問.
1 class Student 2 { 3 public static void main(String[] args) 4 { 5 StudentInformation s1 = new StudentInformation();6 s1.name = "關羽"; 7 s1.setAge(36); 8 s1.print(); 9 } 10 } 11 12 class StudentInformation 13 { 14 String name; 15 private int age; 16 17 public void setAge(int a) 18 { 19 if (age >= 0 && age <= 200) 20 { 21 age = a;22 }else 23 { 24 System.out.println("error"); 25 } 26 } 27 28 public int getAge() 29 { 30 return age; 31 } 32 33 public void print() 34 { 35 System.out.println(name + "===" +age); 36 } 37 }
4.this關鍵字是什麽?this關鍵字的應用場景:
在對象中,成員變量是隱式的,因為其不會在方法中定義,而是在類中方法外定義。
方法中的局部變量的變量名可以與成員變量相同,在方法中直接調用的話則優先就近使用局部變量
如果想要使用成員變量則需用this關鍵字進行區分,格式為 this.變量名
5.如何使用一個類的成員:
首先要進行創建對象;
創建對象的格式為:類名 對象名 = new 類名();其中對象名的命名應遵循lowerCamelCase。
然後就可以通過 對象名.變量名 和 對象名.方法名(...)對類中的變量和方法進行使用。
二、內存圖
一個對象的內存圖
兩個對象的內存圖
三個引用兩個對象的內存圖
三、自定義類
Student類
1 class Student 2 { 3 public static void main(String[] args) 4 { 5 StudentInformation s1 = new StudentInformation(); 6 s1.name = "關羽"; 7 s1.setAge(36); 8 s1.print(); 9 } 10 } 11 12 class StudentInformation 13 { 14 String name; 15 private int age; 16 17 public void setAge(int a) 18 { 19 if (age >= 0 && age <= 200) 20 { 21 age = a; 22 }else 23 { 24 System.out.println("error"); 25 } 26 } 27 28 public int getAge() 29 { 30 return age; 31 } 32 33 public void print() 34 { 35 System.out.println(name + "===" +age); 36 } 37 }
Phone類
1 class Phone 2 { 3 public static void main(String[] args) 4 { 5 PhoneInformation p1 = new PhoneInformation(); 6 p1.name = "水果手機"; 7 p1.price = 5000; 8 p1.print(); 9 10 PhoneInformation p2 = new PhoneInformation(); 11 p2.name = "糧食手機"; 12 p2.price = 2000; 13 p2.print(); 14 } 15 } 16 17 class PhoneInformation 18 { 19 String name; 20 int price; 21 22 public void print() 23 { 24 System.out.println(name + "===" +price); 25 } 26 }
Car類
1 class Class01 2 { 3 public static void main(String[] args) 4 { 5 CarInformation c1 = new CarInformation(); 6 c1.color = "紅色"; 7 c1.type = "法拉利"; 8 c1.power = 380; 9 c1.print(); 10 11 CarInformation c2 = new CarInformation(); 12 c2.color = "灰色"; 13 c2.type = "五菱宏光"; 14 c2.power = 9000; 15 c2.print(); 16 } 17 } 18 19 class CarInformation 20 { 21 String color; 22 String type; 23 int power; 24 25 public void print() 26 { 27 System.out.println(color + type + "===" + power + "馬力"); 28 } 29 }
0711 第八次作業