面向對象之封裝:
把實現細節給隱藏,對外提供公共的訪問方式。
好處:將變化隔離、便於使用、提高重用性和安全性
Private 關鍵字:是一個權限修飾符,用於修飾成員變量和成員方法, 被private修飾的成員只能在本類方法中使用
想給成員變量賦值,通過setXxx()方法。和帶參數的構造函數
想單獨獲取一個成員變量,用getXxx()方法。
構造方法:
和類名一樣的方法就要構造方法
作用:創建對象,對對象的內容進行初始化
特點:
函數名和類名相同
沒有返回值類型
沒有返回值
格式:
修飾符 類名(形參...){
}
注意事項:
如果一個類沒有提供構造方法,那麼系統將會自動給出一個默認的無參構造方法
如果自己給定了構造方法,系統將不再給出構造方法。
若使用無參構造,就要自己寫一個無參構造方法。
如果一個方法是類名,但是有返回值類型,不管是不是void,都構造普通函數
如何把一個同名局部變量賦值給一個成員變量,這是使用this關鍵字。
一個方法中的變量,首先在局部變量的位置找,如果沒有再在類中尋找,如果還沒有就報錯。
This:代表當前類的一個引用對象
在一個方法內部,誰調用這個方法,this就代表誰。
應用場景:
用於解決局部變量隱藏成員變量。
通過this調用本類的構造方法。注:它必須放在構造方法的第一條語句上
修飾符: public default protected private
Java的類格式:
成員變量私有化
無參構造函數
公共的set/get方法
長方形案例:
/*
注意事項:
A:成員變量要給出註釋。
B:所有的方法之間要有空行。
所有的方法你都可以不寫,只要你不用。
但是,下面的這種寫法是我們的基本要求。JavaBean。
成員變量私有
無參構造方法
公共的get/set方法。
*/
class Rect {
//長方形的長
private int length;
//長方形的寬
private int width;
//構造方法
public Rect(){}
public Rect(int length,int width) {
this.length = length;
this.width = width;
}
//setXxx()/getXxx()方法
public void setLength(int length) {
this.length = length;
}
public int getLength() {
return length;
}
public void setWidth(int width) {
this.width = width;
}
public int getWidth() {
return width;
}
public int getZhouChang() {
return (length+width)*2;
}
public int getArea() {
return length*width;
}
}
class RectTest {
public static void main(String[] args) {
//無參構造+setXxx方法
Rect r1 = new Rect();
r1.setLength(30);
r1.setWidth(20);
System.out.println(r1.getZhouChang());
System.out.println(r1.getArea());
//帶參構造
Rect r2 = new Rect(30,20);
System.out.println(r2.getZhouChang());
System.out.println(r2.getArea());
}
}
Static關鍵字:
靜態的意思,可以修飾成員變量,可以修飾成員方法,被static修飾的成員變量被所有的對象所共享。
使用場景:
如果某個成員是被所有對象共享的時候,才使用靜態修飾。
特點:
隨之類的加載而加載。
優先於對象而存在。
被所有對象所共享。
可以直接被類名調用。
被靜態修飾的內容可以通過對象調用也可用類名調用,建議用類名調用。
靜態的訪問
A:靜態方法:
靜態成員變量
靜態成員方法
B:非靜態方法:
非靜態成員變量
非靜態成員方法
靜態成員變量
靜態成員方法
簡記:靜態只能訪問靜態。
注意:在靜態方法中沒有this關鍵字。
(5)什麼時候該用靜態呢?
儘量不要使用靜態,因爲靜態的內容是隨着類的加載而加載,生命週期太長,佔用資源,效率低。
該用的情況:
A:被所有對象共享的數據。
B:一個工具類。爲了讓別人直接通過類名調用。
使用注意:
靜態方法只能訪問靜態成員 靜態只能訪問靜態。(非靜態可以隨意訪問)
靜態方法中不可寫this、super關鍵字
主函數是靜態的。
主方法:語句分析
Public : main是被jvm調用,所以,它的方法權限必須足夠大。
Static :main是被jvm調用,爲了方便,不創建對象,直接通過類名調用
Void : 空的意思。因爲我們把結果返回給jvm沒有意義。
Main : 習慣寫法,都叫main。主要的意思,程序的入口。
String[] args : 這是一個字符串數組。在早期是爲了接收鍵盤錄入的
我們在一個類中使用其他類的功能,按照正常情況下:我們首先編譯其他的類
得到class文件,然後再使用。而如果我們使用了多個這樣的類,每個類都要進行編譯
太麻煩,所以java幫你自動編譯所使用到的類,你只需要編譯當前的類即可。
那麼這個時候,我們製作幫助文檔
(1)幫助我們知道別人提供給我們的class裏面到底有什麼
(2)步驟
A:自己寫一個類,加入文檔註釋
B:通過JDK的javadoc工具製作
格式:javadoc -d doc -version -author ArrayTools.java
學習和使用API的步驟:
注意:類及方法出現的版本。
瞭解API是什麼?應用程序編程接口。(JDK提供給我們的幫助文檔)
Application Programming Interface
找到API
雙擊打開
點擊顯示,出現一個索引界面對應的文本框
你要知道你學習的那個類是什麼
Math
在輸入框裏輸入Math,回車就能得到一個關於Math類的描述信息
首先看包:
如果是java.lang包下的類是可以直接使用的
如果是在其他包下,必須要導包。
案例:
import java.util.Scanner;
class GuessNumberGame{
public static void main(String[] args){
//創建一個1-100之間的隨機數
int num = (int)(Math.random()*100)+1;
while(true){
//讀取鍵盤錄入
Scanner sc = new Scanner(System.in);
System.out.println("請輸入你要猜的數字:");
int guessNum = sc.nextInt();
//對兩個數進行判斷
if(guessNum > num){
System.out.println("女媧把我造的小了!");
}else if(guessNum < num){
System.out.println("上帝給了我一個比你強健的體魄!");
}else{
System.out.println("恭喜你!你已經達到了神的境界");
break;
}
}
}
}