2017第三次java做業

(一).學習總結

1.什麼是面向對象的封裝性,Java中是如何實現封裝性的?試舉例說明。

封裝性就是對外部不可見,避免程序中用對象直接訪問類中的屬性。爲了不錯誤,因此在開發中將類中的屬性進行封裝。
屬性封裝: private 屬性類型 屬性名稱;
方法封裝: private 方法返回值 方法名稱(參數列表){}java

2.閱讀下面程序,分析是否能編譯經過?若是不能,說明緣由。

(1)git

class A{
    private int secret = 5;
    }
public class Test{
    public static void main(String args[]){
        A a = new A();
        System.out.println(a.secret++);
        }
    }

不能運行,不能經過編譯,由於類的屬性爲私有,secret被封裝了,只能在A中訪問,不能直接訪問。
(2)數據庫

public class Test{
int x = 50;
static int y = 200;
public static void method(){
    System.out.println(x+y);
}
public static void main(String args[]){
    Test.method();
}
}

不能運行,由於static變量是全局變量是私有數據,在main中不能夠直接訪問。static變量不是所在類的某個具體對象全部,而是該類的全部對象所共有的,靜態變量既能被對象調用,也能直接拿類來調用。靜態變量不能調用非靜態變量。設計模式

3 . 使用類的靜態變量和構造方法,能夠跟蹤某個類建立的對象個數。聲明一個圖書類,數據成員爲編號,書名,書價,並擁有靜態數據成員冊數記錄圖書的總數。圖書編號從1000開始,每產生一個對象,則編號自動遞增(利用靜態變量和構造方法實現)。下面給出了測試類代碼和Book類的部分代碼,將代碼補充完整。

class Book{
private int bookId;
private String bookName;
private double price;
// 聲明靜態變量
private static int number;
//定義靜態代碼塊對靜態變量初始化
static{
     number=1000;
}
//構造方法
public Book(String bookName,double price){
 this,bookName=bookName;
 this.price=price;
 bookId-number;
 number++;
} 
 public String getBookName() {
    return bookName;
}
public void setBookName(String bookName) {
    this.bookName = bookName;
}
public double getPrice() {
    return price;
}
public void setPrice(double price) {
    this.price = price;
}  
//定義方法求圖書總冊數
 public static int sumBook(){
 int sum=-(number-1000);
 return sum;
//重寫toString方法
 public String toString(){
    return "圖書編號:"+bookId+"圖書名稱:"+this.boohName+"圖書價格:"+this.price;
}
}
}
public class Test{
public static void main(String args[]){ 
    Book[] books = {new Book("c語言程序設計",29.3),
                    new Book("數據庫原理",30),
                    new Book("Java學習筆記",68)};
    System.out.println("圖書總數爲:"+ Book.totalBook()); 
    for(Book book:books){
        System.out.println(book.toString());
    }
}   
}

4.什麼是單例設計模式?它具備什麼特色?用單例設計模式設計一個太陽類Sun。

單例模式就是使得類的一個對象成爲系統中惟一實例。使用工廠方法來限制實例化過程。這個方法應該是靜態方法。
特色:Singleton 會阻止其餘對象實例化其本身的Singleton對象的副本,從而確保全部對象都訪問惟一實例。能夠更加靈活的修改實例化過程。數組

public class Sun{
    private Sun(){}
    private static final Sun single=new Sun();
    public static Sun getInstance(){
        return single;
    }
 }

5.理解Java參數傳遞機制,閱讀下面的程序,運行結果是什麼?說明理由。

ublic class Test {
String str = new String("你好  ");
char[] ch = { 'w','o','l','l','d' };
public static void main(String args[]) {
    Test test = new Test();
    test.change(test.str, test.ch);
    System.out.print(test.str);
    System.out.print(test.ch);
}
public void change(String str, char ch[]) {
    str = "hello";
    ch[0] = 'W';
}
}

運行結果是:你好 wolld。
str傳遞的是值,ch[]則傳遞的是地址,ch[]改變的則是地址中的內容。學習

(二)實驗總結

1.按照下列要求完成類的設計

(1)設計一個日期類,用於記錄年、月、日,提供對日期處理的經常使用方法(日期輸出格式xxxx-xx-xx)。

(2)設計一個職工類,該職工類至少具備下面的屬性:職工號,姓名,性別,生日,工做部門,參加工做時間,設計相應的方法。

(3)設計一個部門類,包括下列屬性:部門編號,部門名稱,經理,設計相應方法。

(4)設計一個測試類,採用對象數組模擬一個擁有兩個部門,10個職工的單位,實現對相關信息的查詢功能。

程序設計思路:運用封裝性,設置職工類部門類日期類,經過setter方法,創建各種之間的聯繫,在測試類中實例化對象,並顯示職工信息。
問題:編寫程序的過程當中好幾回提醒注意靜態變量。
注意應該是靜態的仍是非靜態的。測試

(三)代碼託管


連接:http://git.oschina.net/hebau_cs15/Java-CS02lcthis

相關文章
相關標籤/搜索