目錄
一、類
1、成員:屬性(成員變量)、方法
2、類的創建:
package day11;
修飾符 class 類名 {
修飾符 屬性類型 屬性名稱; //定義屬性;
修飾符 返回值 方法名() { //定義方法
}
}
注意:
①文件名必須與類名相同,且首字母必須大寫。
②一個Java文件中只允許存在一個public類,但可存在多個非public類。
③修飾符包含:private、default(默認不寫)、protect、public
④上表中,private的作用範圍僅在類內部,表示僅在本類內部可對其進行修改,其它類不能,其餘修飾符同理。
案例:創建學生信息類,包含學生學號、姓名、電話的屬性,還包含輸出學生信息的方法。
package day11; public class Stuinfo { public int id; public String name; public int tel; public void showInfo() { System.out.println("學生信息如下:"); System.out.println("學號:"+id+" "+"姓名:"+name+" "+"電話:"+tel); } }
二、對象
1、創建對象:
案例:創建學生信息類的對象,爲屬性賦值並調用該類內部的方法。
package day11; public class Test1 { public static void main(String[] args) {//main方法中創建對象 Stuinfo stu=new Stuinfo();//new StuInfo對象 stu.id=1;//賦值 stu.name="張三"; stu.tel=123456; stu.showInfo();//調用類中方法 } }
運行結果:
注意:要在main方法中創建對象。
2、構造方法(構造器)
①含義:屬於類中特殊方法,主要用於初始化類中屬性的值。
②語法:
public 類名{
賦初值語句
...
}
案例1:爲Stuinfo類創建含有三個參數的構造方法,併爲類中屬性賦初值。
package day11; public class Stuinfo { public int id; public String name; public int tel; public Stuinfo(int ids,String names,int tels){ //含有三個參數的構造器 id=ids; name=names; tel=tels; } public void showInfo() { System.out.println("學生信息如下:"); System.out.println("學號:"+id+" "+"姓名:"+name+" "+"電話:"+tel); } }
注意:對一個只包含有變量構造器的類創建對象時,若使用Stuinfo stu = new Stuinfo();會報錯(如下圖)。
正確創建對象的方法:
案例2:可變個數的方法形參
package day11; public class Stuinfo { public void ShowInfo(String ...str) { //也可使用String str[]代替String ...str System.out.println("輸入的參數爲:"); for(int i=0;i<str.length;i++) { System.out.print(str[i]+" "); } } }
注意:當參數即包含確定的類型又包含不確定個數的參數時,要把確定的參數放在String ...str的前面,中間使用逗號隔開。
package day11; public class Stuinfo { public void ShowInfo(int id,String ...str) { System.out.println("輸入的參數爲:"); for(int i=0;i<str.length;i++) { System.out.print(str[i]+" "); } } }
3、類變量、類方法
①含義:使用static關鍵字修飾的屬性、方法稱爲類變量、類方法。
②類變量:類變量被賦值後其值被共享。
案例:證明類變量被賦值後其值被共享。
package day11; public class Stuinfo { //Stuinfo類 public static int id; public Stuinfo(int ids) { //構造方法 id=ids; } public static void getId() { System.out.println(id); } } class Test1 { public static void main(String[] args) { Stuinfo stu1=new Stuinfo(10); //創建stu1對象賦初值爲10並輸出其值 stu1.getId(); Stuinfo stu2=new Stuinfo(11);//創建stu2對象賦初值爲11並輸出stu1的值 stu1.getId(); } } //比較兩次stu1中的id值是否發生變化,若發生改變則可證上述描述無誤。
運行結果:
③類方法:使用static關鍵字修飾後可使用匿名對象調用其方法。
案例:證明類方法可用匿名對象直接調用。
package day11;
public class Stuinfo {
public static void print() {
System.out.println("hello world");
}
}
class Test1 {
public static void main(String[] args) {
Stuinfo.print(); //注意:不屬於匿名對象
}
}
運行結果:
若不用static修飾,直接使用匿名對象調用:
④匿名對象:
package day11;
public class Stuinfo {
public static void print() {
System.out.println("hello world");
}
}
class Test1 {
public static void main(String[] args) {
new Stuinfo().print();
}
}
4、靜態、非靜態代碼塊
①作用:初始化
②非靜態代碼塊:
- 可調用靜態、非靜態屬性或對象。
- 創建對象都會執行一次代碼塊。
- 同爲代碼塊按先後順序執行。
③靜態代碼塊:
- 不可以調用非靜態屬性、方法。
- 靜態代碼塊的執行要早於非靜態代碼塊。
- 靜態代碼塊僅在首次創建對象時執行,以後不再執行。
④執行順序:代碼塊(先靜態後非靜態、先上後下順序)->顯示初始化->構造方法(構造器)
三、封裝對象(JavaBean )
1、含義:使代碼使用更安全,便於操作。
2、封裝方法:
①屬性的修飾變爲private(保證外部不能直接修改屬性的值)。
②添加set、get方法,步驟如下圖:
鼠標右鍵->按下圖操作
勾選屬性
點擊創建
創建完成,如下圖所示
四、this、final關鍵字
1、this關鍵字作用:
①當形參與變量重名時使用this區分。
②在方法中使用this提高代碼的可讀性。
案例:構造函數中使用this爲屬性初始化。
package day11;
public class Stuinfo {
private int num;
private String name;
public Stuinfo(int num,String name) { //儘管形參名與屬性名相同也可以區分
this.num=num;
this.name=name;
}
}
案例2:在構造方法中使用this。
class Person{
private String name ;
private int age ;
public Person(){
System.out.println("新對象實例化") ;
}
public Person(String name){
this(); // 調用本類中的無參構造方法
this.name = name ;
}
public Person(String name,int age){
this(name) ; // 調用有一個參數的構造方法
this.age = age;
}
public String getInfo(){
return "姓名:" + name + ",年齡:" + age ;
}
}
注意:
①static修飾的方法(類方法)中不可使用this關鍵字。
②this調用本類中的其它構造器,至少保證有一個不適用this()。
2、final關鍵字:
①標記類:該類不能再被繼承。
②標記方法:該方法不能被重寫。
③標記變量:該變量變爲常量(常量要賦初值,並建議全部字符大寫)。
不足請留言!