摘要:封裝的實現封裝將類的某些信息隱藏在類內部,不允許外部程序直接訪問,只能通過該類提供的方法來實現對隱藏信息的操作和訪問即隱藏對象信息的同時要留出訪問的接口封裝的特點只能通過規定的方法訪問數據隱藏類的實例細節,方便修改和實現封裝代碼的實現修改屬
Lecture1 封裝的實現
封裝:將類的某些信息隱藏在類內部,不允許外部程序直接訪問,只能通過該類提供的方法來實現對隱藏信息的操作和訪問(即隱藏對象信息的同時要留出訪問的接口)
封裝的特點:
只能通過規定的方法訪問數據
隱藏類的實例細節,方便修改和實現
封裝代碼的實現:
修改屬性的可見性 -- 設為private
創建getter/setter方法 -- 設為public,用于屬性的讀寫
在getter/setter方法中加入屬性控制語句
Tips:只有getXXX方法的屬性是只讀屬性;只有setXXX方法的屬性是只寫屬性
Java封裝的意義:
防止使用者錯誤修改系統的屬性
提高系統的獨立性
提高軟件的可重用性
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()); } }
定義Java包:語法 -- package 包名;,必須放在Java源文件中的第一行;一個Java源文件中只能有一個package語句
Java包的作用:管理Java文件;解決同名文件沖突
Java包的特點:Java中一個包里不能存在同名類,建議每個包內儲存的信息功能單一
Java包的命名:域名倒序+模塊名+功能名(推薦全部使用小寫)
導入包的方法:
通過import 包名.*;導入此包下的所有類
通過import 包名.類名;導入此包下的指定類
通過在源代碼中直接加載包名.類名;
建議采用import 包名.類名;的方式加載,提高效率
Tips:加載類的順序跟import導入語句的位置無關
當通過import 包名.*;只能訪問到指定包名下的類,無法訪問子包下的類
Java常用系統包:
java.lang | 包含Java語言的基礎的類,該包系統加載時默認導入,如:System、String、Math |
---|---|
java.util | 包含Java語言中常用工具,如:Scanner、Random |
java.io | 包含輸入、輸出相關功能的類,如File、InputStream |
static關鍵字:表示靜態信息;特征:類對象共享(即共享同一塊內存空間);類加載時產生,銷毀時釋放,生命周期長
靜態成員的訪問方法:
對象.成員名
類名.成員名
推薦調用方式:類名.靜態成員
static + 屬性 -- 靜態屬性、靜態屬性;static + 方法 -- 靜態方法、類方法;沒有靜態的類(只能使用public、abstract、final修飾)和靜態的局部變量(只能使用final修飾)
普通成員方法可以調用類中任何成員(包括靜態成員),而靜態方法中不能直接訪問同一個類中的非靜態成員,只能直接調用同一個類中的靜態成員
代碼塊:在語句中出現“ {} ”,就叫做代碼塊;出現在方法里 -- 普通代碼塊(順序執行 - 先出現,先執行;可以有多個普通代碼塊 );出現在類中 -- 構造代碼塊(創建對象時調用,優先于構造方法執行;可以有多個構造代碼塊),可以給所有成員賦值;static + 構造代碼塊 -- 靜態代碼塊(只在類加載時調用執行一次,優先于構造代碼塊執行;可以有多個靜態代碼塊),只能給靜態成員賦值
變量的作用范圍:從定義處開始至大括號閉合
static關鍵字及代碼塊案例:
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(); } }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/71171.html
摘要:值得注意的是,默認會自動配置,它將優先采用連接池,如果沒有該依賴的情況則選取,如果前兩者都不可用最后選取。 SpringBoot 是為了簡化 Spring 應用的創建、運行、調試、部署等一系列問題而誕生的產物,自動裝配的特性讓我們可以更好的關注業務本身而不是外部的XML配置,我們只需遵循規范,引入相關的依賴就可以輕易的搭建出一個 WEB 工程 Spring Framework對數據...
摘要:面向切面的面向切面編程的基本原理通過創建切面使用注解為切面注入依賴定義術語通知前置通知在目標方法被調用之前調用通知功能后置通知在目標方法完成之后調用通知,此時不會關心方法的輸出是什么返回通知在目標方法成功執行之后調用通知異常通知在目標方 面向切面的Spring 面向切面編程的基本原理 通過POJO創建切面 使用@AspectJ注解 為AspectJ切面注入依賴 定義AOP術語 ...
摘要:相比它支持存儲的類型相對更多字符哈希集合有序集合列表,同時是線程安全的。基于的連接實例,可以在多個線程間并發訪問,且線程安全,滿足多線程環境下的并發訪問,同時它是可伸縮的設計,一個連接實例不夠的情況也可以按需增加連接實例。 SpringBoot 是為了簡化 Spring 應用的創建、運行、調試、部署等一系列問題而誕生的產物,自動裝配的特性讓我們可以更好的關注業務本身而不是外部的XML...
此文章為Spring Boot Reference Guide(2.1.5.RELEASE)的備忘錄。 Chapter 8. Introducing Spring Boot You can use Spring Boot to create a Java application that can be started by using java -jar or more traditional w...
閱讀 701·2021-11-18 10:02
閱讀 2235·2021-11-15 18:13
閱讀 3139·2021-11-15 11:38
閱讀 2934·2021-09-22 15:55
閱讀 3667·2021-08-09 13:43
閱讀 2438·2021-07-25 14:19
閱讀 2449·2019-08-30 14:15
閱讀 3441·2019-08-30 14:15