類
類是模子,確定對象將會擁有的特征(屬性)和行為(方法)
類的特點
類是對象的類型
具有相同屬性和方法的一組對象的集合
屬性——對象具有的各種特征,每個對象的每個屬性都擁有特定值
方法——對象執行的操作
類是抽象的概念,僅僅是模板,比如說:“手機”對象是一個看得到、摸得着的具體實體
如何定義java中的類
1、類的重要性:所有java程序都以類(class)為組織單元
2、什么是類?類是模子,確定對象將會擁有的特征(屬性)和行為(方法)
3、類的組成:屬性和方法
4、定義一個類的步驟
a、定義類名
b、編寫類的屬性
c、編寫類的方法
Java對象
1、創建對象
類名 對象名=new 類名();
Telphone phone=new Telphone();
2、使用對象
引用對象的屬性:對象名.屬性
Phone.screen=5;//給screen熟悉賦值為5
引用對象的方法:對象名.方法名()
Phone.sendMessage();//調用sendMessage()方法
public class TelPhone { //屬性(成員變量) 有什么 float screen; float cpu; float mem; //方法 干什么 void call(){ System.out.println("telphone有打電話的功能"); } void sendMessage(){ System.out.println("screen:"+screen+"cpu:"+cpu+"mem:"+mem+"telphone有發短信的功能"); } } public class InitailTelPhone { public static void main(String[] args){ //創建類的對象 TelPhone phone=new TelPhone(); //調用類的方法 phone.sendMessage(); //給實例變量賦值 phone.screen=5.0f; phone.cpu=1.4f; phone.mem=2.0f; //再次調用類的方法 phone.sendMessage(); } }
java中的成員變量和局部變量
1、成員變量
在類中定義,用來描述對象將要有什么
本類的方法可以使用,或其它有關系的類的方法也可以使用
2、局部變量
在類的方法中定義,在方法中臨時保存數據
只有在當前方法中才能使用
成員變量和局部變量的區別
1、作用域不同
局部變量的作用域僅限於定義它的方法內部使用
成員變量的作用域在整個類的內部都是可以使用的
2、初始值不同
Java會給成員變量一個初始值,初始值為0
局部變量沒有初始值
3、在同一個方法中,不允許有同名的局部變量
4、在不同的方法中,可以有同名的局部變量
5、兩類變量同名時,局部變量有更高的優先級
java中的構造方法
1、使用new+構造方法,可以創建一個新的對象
Tips:在創建對象時,new+的其實是構造方法
2、構造方法是定義在java類中的一個用來初始化對象的方法
3、構造方法與類同名且沒有返回值
無參的構造方法
main:
Telphone phone=new Telphone();//構造方法名稱
class Telphone:
public Telphone(){
System.out.println("無參的構造方法執行了!");
}
帶參構造方法的使用
main:
Telphone phone=new Telphone(4.0f,2.0f,2.0f); // 構造方法名稱,括號里為構造方法的參數
class Telphone:
public Telphone(float newScreen,float newCpu,float newMen){
screen=newScreen;
cpu=newCpu;
mem=newMen;
}
public class InitailTelPhone { public static void main(String[] args){ //通過無參的構造方法創建類的對象 TelPhone phone=new TelPhone(); //通過有參的構造方法創建類的對象,並給對象中的實例變量賦初值 TelPhone phone2=new TelPhone(5.0f,2.0f,3.0f); } } public class TelPhone { //定義成員變量 float screen; float cpu; float mem; public TelPhone(){ System.out.println("無參的構造方法執行了"); } //帶參數的構造方法 //括號里的參數和成員變量是有區別的 public TelPhone(float newScreen,float newCpu,float newMen){ //為成員變量賦初值 screen=newScreen; cpu=newCpu; mem=newMen; System.out.println("有參的構造方法執行了"); } }
當沒有指定構造方法時,系統會自動添加無參的構造方法
當有指定構造方法,無論是有參、無參的構造方法,都不會自動添加無參的構造方法
構造方法的重載:方法名相同,但參數不同的多個方法,調用是會自動根據不同的參數選擇對應的方法
構造方法不但可以給對象的屬性賦值,還可以保證給對象的屬性賦一個合理的值
//帶參數的構造方法 //括號里的參數和成員變量是有區別的 public TelPhone(float newScreen,float newCpu,float newMen){ //為成員變量賦初值,並保證賦一個合理的值 if(newScreen<3.5f){ System.out.println("您輸入的參數有問題,自動賦值3.5"); screen=3.5f; }else{ screen=newScreen; } cpu=newCpu; mem=newMen; System.out.println("有參的構造方法執行了"); }
Static使用之靜態變量
被static修飾的成員稱為靜態成員或類成員。它屬於整個類所有,而不是某個對象所有,即被類的對象所共享。靜態成員可以使用類名直接訪問,也可以使用對象名進行訪問。
使用static可以修飾 變量、方法、代碼塊。
public class HelloWorld{ //定義靜態變量 static String name="liuYun"; int a=10; public static void main(String[] args){ System.out.println(HelloWorld.name);//可以使用類名直接訪問 System.out.println(name);//這樣居然可以直接訪問 HelloWorld hello=new HelloWorld(); System.out.println(hello.a);//非靜態變量用對象名訪問 } }
Static使用之靜態方法
1、靜態方法中可以直接調用同類中的靜態成員,但不能直接調用非靜態成員。如果希望在靜態方法中調用非靜態變量,可以通過創建類的對象來訪問非靜態變量
2、在普通成員方法中,則可以直接調用同類的非靜態變量和靜態變量
3、靜態方法中不能直接調用非靜態方法,需要通過對象來訪問非靜態方法
public class HelloWorld{ //定義靜態變量 static int score1=86; static int score2=92; //定義靜態方法sum public static int sum(){ int sum; sum=score1+score2; return sum; } public static void main(String[] args){ int sum=HelloWorld.sum();//調用靜態方法 System.out.println("總分:"+sum); } }
Static使用之靜態初始化塊
Java中可以通過初始化塊進行數據賦值
public class HelloWorld{ String name;//定義一個成員變量 //通過初始化塊為成員變量賦值 { name="liuYun"; } }
如果使用 static 修飾初始化塊,就稱為靜態初始化塊。
需要特別注意:
靜態初始化塊只在類加載時執行,且只會執行一次,同時靜態初始化塊只能給靜態變量賦值,
不能初始化普通的成員變量。
public class HelloWorld{ String name; String sex; static int age; //構造方法 public HelloWorld(){ System.out.println("通過構造方法初始化name"); name="liuYun"; } //初始化塊 { System.out.println("通過初始化塊初始化sex"); sex="男"; } //靜態初始化塊 static{ System.out.println("通過靜態初始化塊初始化age"); age=29; } public void show(){ System.out.println("姓名:"+name+",性別:"+sex+",年齡:"+age); } public static void main(String[] args){ HelloWorld hello=new HelloWorld(); hello.show(); } }