封裝的特色:java
封裝代碼的實現:dom
Tips:只有getXXX方法的屬性是隻讀屬性;只有setXXX方法的屬性是隻寫屬性工具
Java封裝的意義:測試
package Chapter10.Lecture1.cat; /** * 寵物貓類的封裝 */ public class Cat { //1.修改屬性的可見性--private,限定只能在當前類內被訪問 private String name; //暱稱 private int month; //年齡 public Cat(){ } //經過帶參構造方法賦值 public Cat(int month) { this.setMonth(month); } //2. 建立getter/setter方法 public String getName() { return "我是一隻叫" + name + "的寵物貓"; } public void setName(String name) { this.name = name; } public int getMonth() { return month; } public void setMonth(int month) { if (month <= 0) { System.out.println("信息輸入錯誤,年齡必須大於0"); } else { this.month = month; } } }
package Chapter10.Lecture1.cat; public class CatTest { public static void main(String[] args) { //對象實例化 Cat one = new Cat(); //經過帶參構造方法建立類 Cat two = new Cat(-2); //測試 //會輸出屬性month的初始值0 System.out.println("年齡:"+two.getMonth()); one.setName("花花"); System.out.println(one.getName()); one.setMonth(-1); if (one.getMonth() == 0) { return; } System.out.println("年齡:" + one.getMonth()); } }
package 包名;
,必須放在Java源文件中的第一行;一個Java源文件中只能有一個package語句導入包的方法:this
import 包名.*;
導入此包下的全部類import 包名.類名;
導入此包下的指定類包名.類名;
建議採用import 包名.類名;
的方式加載,提升效率code
Tips:加載類的順序跟import導入語句的位置無關對象
import 包名.*;
只能訪問到指定包名下的類,沒法訪問子包下的類java.lang | 包含Java語言的基礎的類,該包系統加載時默認導入,如:System、String、Math |
---|---|
java.util | 包含Java語言中經常使用工具,如:Scanner、Random |
java.io | 包含輸入、輸出相關功能的類,如File、InputStream |
靜態成員的訪問方法:遞歸
推薦調用方式:類名.靜態成員接口
package Chapter10.Lecture2.animal; public class Cat { //靜態成員、類成員 public static int price; //售價 private String name; //暱稱 private int month; //年齡 private double weight; //體重 private String species; //品種 { System.out.println("我是構造代碼塊"); } static { System.out.println("我是靜態代碼塊"); } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getMonth() { return month; } public void setMonth(int month) { this.month = month; } public double getWeight() { return weight; } public void setWeight(double weight) { this.weight = weight; } public String getSpecies() { return species; } public void setSpecies(String species) { this.species = species; } public static void eat() { //靜態方法中不能直接訪問同一個類中的非靜態成員,只能直接調用同一個類中的靜態成員 //run(); //name = "小明"; //只能經過對象實例化後,對象.成員方法的方式訪問非靜態成員 Cat temp = new Cat(); temp.run(); temp.name = "小明"; //靜態方法中不能使用this //this.name = "小明"; Cat.price = 100; System.out.println("小貓吃魚"); } //在成員方法中,能夠直接訪問類中的靜態成員 public void run() { { System.out.println("我是普通代碼塊"); } this.name = "凡凡"; Cat.price = 20; eat();//此行代碼會致使棧溢出,註釋掉後執行(緣由:遞歸調用) System.out.println("售價是" + Cat.price + "的" + this.name + "快跑"); } }
package Chapter10.Lecture2.test; import Chapter10.Lecture2.animal.Cat; public class Test { public static void main(String[] args) { Cat one = new Cat(); one.setName("花花"); one.setMonth(2); one.setSpecies("英國短毛貓"); //one.price = 2000; Cat.price = 2000; Cat two = new Cat(); two.setName("凡凡"); two.setMonth(1); two.setSpecies("中華田園貓"); //two.price = 150; Cat.price = 150; System.out.println(one.getName() + "的售價爲:" + one.price); System.out.println(two.getName() + "的售價爲:" + two.price); //one.eat(); Cat.eat(); System.out.println("----------------------"); one.run(); } }