封裝性就是對外部不可見,避免程序中用對象直接訪問類中的屬性。爲了不錯誤,因此在開發中將類中的屬性進行封裝。
屬性封裝: private 屬性類型 屬性名稱;
方法封裝: private 方法返回值 方法名稱(參數列表){}java
(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變量不是所在類的某個具體對象全部,而是該類的全部對象所共有的,靜態變量既能被對象調用,也能直接拿類來調用。靜態變量不能調用非靜態變量。設計模式
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()); } } }
單例模式就是使得類的一個對象成爲系統中惟一實例。使用工廠方法來限制實例化過程。這個方法應該是靜態方法。
特色:Singleton 會阻止其餘對象實例化其本身的Singleton對象的副本,從而確保全部對象都訪問惟一實例。能夠更加靈活的修改實例化過程。數組
public class Sun{ private Sun(){} private static final Sun single=new Sun(); public static Sun getInstance(){ return single; } }
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[]改變的則是地址中的內容。學習
程序設計思路:運用封裝性,設置職工類部門類日期類,經過setter方法,創建各種之間的聯繫,在測試類中實例化對象,並顯示職工信息。
問題:編寫程序的過程當中好幾回提醒注意靜態變量。
注意應該是靜態的仍是非靜態的。測試