1.java類class的定義
所有java程序都以類class為組織單元,java類由屬性和方法組成,下面看例子:
public class Phone{
//屬性
String company;
float cpu;
//方法
void call() {
System.out.println("這是一部手機!");
}
}
2.java對象的創建以及使用
上面我們已經創建了一個類Phone,所謂對象就是對這個人為構造的類進行實例化。
創建:
Phone iphone = new Phone(); 這個iphone就是對Phone這個類的實例化,它就是一個對象,繼承了Phone類的所有屬性以及方法。
使用:
iphone.company="蘋果公司"; 這里是對對象iphone的company進行賦值操作
iphone.call(); 這里是調用對象iphone的call方法
3.java類中的變量類型
成員變量:通俗來講就是指class下定義的屬性和方法;
局部變量:通俗來講就是指class下的方法中所含的變量;
那么是不是這兩種變量是不是可以隨意訪問呢,這就涉及到一個作用域的問題。
我們把成員變量當做父親,局部變量是方法(父親)下的變量,即為兒子;
那么父親出生時必然是看不到兒子的,所以在父親所在的環境里不能夠訪問兒子(局部變量);
同理,兒子出生時必然可以看見父親,所以在兒子所在的環境里是絕對能夠訪問父親(成員變量),
即在class下方法內部是可以訪問class下定義的成員變量。
4.構造方法
所謂構造方法,是指定義在java類中初始化對象的方法,實例化對象的時候自動執行這個構造方法。
特點是:與類同名、沒有返回值;
e.g: public class Todo{
String str;
public Todo(){
this.str="桔子桑";
System.out.println(str);
}
}
調用時,直接Todo eco = new Todo();自動輸出上面的字符串。
構造函數采用this語句實現了對成員變量的初始化。
有參的構造方法就不贅述了,要在參數前面指定參數類型。
如果沒有定義構造方法,系統會自動生成一個空的無參構造方法。
5.static修飾符和final修飾符
static修飾符在java類中很常見,就是靜態修飾符,例如:
static String name = "桔子桑";
public static void main(String[] args) { 方法體};
用static修飾的類的成員(屬性或者方法)是供類的所有實例化對象公用的;
就像現在有一塊黑板,大家都可以在上面畫畫寫字,A畫了一幅畫之后,B再拿到這塊黑板時,
這塊黑板上就會有A的畫,如果B再對其修改,傳到C手里,C看到的就是B修改后的樣子。
static的作用就在於此,它所修飾的類的成員可以看作是動態變化的。
final修飾符通常定義常量,一旦定義之后此常量不可改變;
final double PI = 3.14;
這樣定義之后,程序里面的PI就都等於3.14,要想在別處對其進行賦值改變它的值也是無效的。
6.靜態屬性與靜態方法之間的訪問問題
靜態方法中只能直接訪問同類中的靜態成員(屬性和方法);
靜態方法中間接訪問非靜態成員可以通過先在靜態方法中實例化一個類的對象,然后通過這個對象來訪問非靜態成員;
非靜態方法中可以直接訪問類中的任意成員,無論靜態與否。
7.初始化塊(靜態與非靜態)
前面我們已經提過,類可以通過構造方法進行對象的初始化操作,下面還有一種新的初始化方法---初始化塊。
寫法:假設已經定義了成員變量String name;static int age;在初始化時對其賦值,
{ name = "桔子桑" ; }
static { age = 99; }
注意:靜態初始化塊只能給靜態變量賦值,並且程序會優先運行靜態初始化塊。
8.封裝
我們可以看到一點,在前面所有的例子中,類里面定義的屬性寫法大多像這樣:String name;
其實這樣寫,用戶可以在本類、同包中通過class名.name訪問這個屬性(訪問修飾符在后面會講到);
我們通常的做法是在定義變量的時候聲明其為私有的:private String name,這樣只能在本類中訪問這個屬性;
那么要怎么才能訪問或者修改呢?這里就會通過封裝一個方法來做這些事;
按照編程規范,通常定義兩個方法:setter和getter;
修改名字:public void setName(String newname){ name = newname; }
獲取名字:public String getName() { return name;}
9.包(package)
你可能已經注意到,一個項目下來會有很多的.java文件,那么這些文件之間是怎么關聯的呢?其實在這里就用到了包管理
在同一個包下的兩個java文件要實現關聯可以直接使用package 包名.類名,或者就干脆用package 包名;
那么,不在一個包下的兩個java文件要實現關聯就得用到import字段了:import 項目名.包名.類名,
這就像是在電腦上找一個文件一樣,D:\web\demo\demo.html
10.訪問修飾符
訪問修飾符 本類 同包 子類 其他
private √
默認 √ √
pretected √ √ √
public √ √ √ √
