1. 程式人生 > >0711 第八次作業

0711 第八次作業

info 區別 his println http tro 圖片 調用 class

一、面向對象

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 第八次作業