網(wǎng)站怎么做搜索功能重慶電子商務網(wǎng)站seo
????????上一篇主要介紹了面向?qū)ο蟮乃枷胍约皟?nèi)存實現(xiàn),關于類與對象感覺寫的不夠好,因此才會有這一篇作為補充;
? ? ? ? 一:類與對象
?
(1)類
一些相同屬性和行為的事物的統(tǒng)稱,比較廣泛、抽象,比如人類,動物類,鳥類;
含有屬性和行為(可以有其中一個,也可以都有),屬性一般用來描述對象的特征,行為用來描述對象可以干什么。
比如動物類中有一個對象:狗;????????屬性:狗有名字,體重;????????行為:狗會吃飯,睡覺;
在Java中,先有類再有對象的;
public class ClassAnimal {/*屬性:狗有名字,體重;行為:狗會吃飯,睡覺;*///成員變量(屬性)}
(2)屬性:(成員變量)
屬性:狗有名字,體重;????
? 權限修飾符 數(shù)據(jù)類型 變量名(一般不對變量名賦值,畢竟對象的屬性一般不相同);
如:public String name ;? // 名字屬性
后面我們再說說 權限修飾符 的事情;
public class ClassAnimal {/*屬性:狗有名字,體重;行為:狗會吃飯,睡覺;*///成員變量(屬性)public String name;public int weight;}
(3)? 行為:(成員方法)
行為:狗會吃飯,睡覺;
我們先了解基本的行為的創(chuàng)建:權限修飾符? 返回值類型 方法名
無返回值類型無形參列表:
? ? ? public void eat ( ) {
????????System.out.println( " 愛吃骨頭頭 " ) ;
}
public class ClassAnimal {/*屬性:狗有名字,體重;行為:狗會吃飯,睡覺;*///成員變量(屬性)public String name;public int weight;//成員方法(行為)public void eat(){System.out.println("愛吃骨頭頭");}public void sleep(){System.out.println("睡覺睡得死");}
}
(4)對象:
類的具體表現(xiàn),用于調(diào)用類的 屬性 和 行為 ;
對象的創(chuàng)建:類名? 對象名 = new 類名();
如:ClassAnimal dog = new ClassAnimal ( ) ;
可以仿照 Scanner 的用法,畢竟都是引用類型 : Scanner scn = new Scanner ( ) ;?
如果類與對象不在同一包下,第一步需要導包:import? 包名 . 類名
public class dog {public static void main(String[] args) {ClassAnimal dog=new ClassAnimal();}
}
對象調(diào)用類的屬性和方法:對象名 .
public class dog {public static void main(String[] args) {ClassAnimal dog=new ClassAnimal();dog.name="大黃";dog.weight=50;dog.eat();dog.sleep();System.out.println(dog.name+"\t"+dog.weight);}
}
C:\Java\jdk-17.0.11\bin\java.exe "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\lib\idea_rt.jar=13016:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\bin" -Dfile.encoding=UTF-8 -classpath C:\Test\classDemo\out\production\classDemo dog
愛吃骨頭頭
睡覺睡得死
大黃 50進程已結束,退出代碼0
(5)注意事項
類的 屬性 和 行為 在 main 方法外創(chuàng)建 ;
成員變量有默認值,規(guī)則與數(shù)組相同;
二:案例演示
????????定義一個手機類,有 顏色,品牌,價格的屬性,有打電話,發(fā)消息的行為,創(chuàng)建對象并調(diào)用;
?如下,為定義的手機類:
public class ClassPhone {//成員變量:顏色,品牌,價格public String color;public String brand;public int price;//成員方法:打電話,發(fā)消息public void call(String who){System.out.println("給"+who+"打電話");}public void message( ){System.out.println("總愛發(fā)消息!");}
}
?????????如下,為創(chuàng)建的類的對象,并進行調(diào)用;可以看出,成員變量的默認值符合數(shù)據(jù)類型的默認值的規(guī)則;
public class phone {public static void main(String [] args){//創(chuàng)建對象ClassPhone c=new ClassPhone();System.out.println(c.brand);//nullSystem.out.println(c.color);//nullSystem.out.println(c.price);//0System.out.println(" ");c.brand="huawei";//華為c.color="black";//黑色c.price=6999;//6999System.out.println(c.brand);System.out.println(c.price);System.out.println(c.color);c.call("劉備備");c.message();}
}
?(2)兩個對象使用同一個類;
兩個對象互不干擾;
public class phone {public static void main(String [] args){//創(chuàng)建對象ClassPhone c=new ClassPhone();c.brand="huawei";//華為c.color="black";//黑色c.price=6999;//6999System.out.println(c.brand);System.out.println(c.price);System.out.println(c.color);c.call("劉備備");c.message();System.out.println(" ");//再次創(chuàng)建對象ClassPhone c1=new ClassPhone();c1.brand="小米";//華為c1.color="blue";//黑色c1.price=5999;//6999System.out.println(c1.brand);System.out.println(c1.price);System.out.println(c1.color);c1.call("曹操");c1.message();}
}
C:\Java\jdk-17.0.11\bin\java.exe "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\lib\idea_rt.jar=6083:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\bin" -Dfile.encoding=UTF-8 -classpath C:\Test\classDemo\out\production\classDemo phone
huawei
6999
black
給劉備備打電話
總愛發(fā)消息!小米
5999
blue
給曹操打電話
總愛發(fā)消息!進程已結束,退出代碼0
?(3)兩個引用指向同一個對象
將 c 的地址賦給 c1,因此 c1 根據(jù)地址找到 c 的屬性;
public class phone {public static void main(String [] args){//創(chuàng)建對象ClassPhone c=new ClassPhone();c.brand="huawei";//華為c.color="black";//黑色c.price=6999;//6999System.out.println(c.brand);System.out.println(c.price);System.out.println(c.color);c.call("劉備備");c.message();System.out.println(" ");//再次創(chuàng)建對象ClassPhone c1=c;System.out.println(c1.brand);System.out.println(c1.price);System.out.println(c1.color);c1.call("曹操");c1.message();}
}
C:\Java\jdk-17.0.11\bin\java.exe "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\lib\idea_rt.jar=6228:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\bin" -Dfile.encoding=UTF-8 -classpath C:\Test\classDemo\out\production\classDemo phone
huawei
6999
black
給劉備備打電話
總愛發(fā)消息!huawei
6999
black
給曹操打電話
總愛發(fā)消息!進程已結束,退出代碼0
三:使用對象作為方法的參數(shù)
當一個對象作為形參傳遞給方法時,傳遞的是對象的地址;
public class phone {public static void main(String [] args){//創(chuàng)建對象ClassPhone c=new ClassPhone();c.brand="huawei";//華為c.color="black";//黑色c.price=6999;//6999//調(diào)用方法method(c);}public static void method(ClassPhone c){System.out.println(c.brand);System.out.println(c.color);System.out.println(c.price);c.message();}
}
四:使用對象作為方法的返回值類型
public class phone {public static void main(String [] args){//賦值調(diào)用ClassPhone cc=method();System.out.println(cc.price);//調(diào)用System.out.println(cc.brand);//調(diào)用System.out.println(cc.color);//調(diào)用cc.call("劉備"); //調(diào)用方法cc.message(); //調(diào)用方法}//方法的返回值類型為 對象public static ClassPhone method( ){//創(chuàng)建對象ClassPhone c=new ClassPhone();c.brand="小米";c.price=3999;c.color="紅色";return c;}
}
C:\Java\jdk-17.0.11\bin\java.exe "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\lib\idea_rt.jar=8352:C:\Program Files\JetBrains\IntelliJ IDEA 2022.1.3\bin" -Dfile.encoding=UTF-8 -classpath C:\Test\classDemo\out\production\classDemo phone
3999
小米
紅色
給劉備打電話
總愛發(fā)消息!進程已結束,退出代碼0
五:局部變量與成員變量
(1)位置不同:
成員變量定義在 main 方法中 ,局部變量定義在方法中;
public class Extend {public static void main(String[] args) {String name;//全局變量}public void method(){int a=20;//局部變量//System.out.println(a);}
}
(2)作用域不同:
成員變量在整個類中都可以使用,局部變量只能在該方法內(nèi)使用;
public class Extend {public static void main(String[] args) {int age=100;//全局變量System.out.println(age);method();//無法調(diào)用}public void method(){int a=20;//局部變量System.out.println(a);}
}
(3)默認值不同
局部變量在棧內(nèi)存中,無默認值,必須賦值才能使用;
成員變量在堆內(nèi)存中,默認值的規(guī)則與數(shù)組相同;
(4)生命周期不同
局部變量隨方法的入棧而創(chuàng)建,隨方法的出棧而消失;
成員變量隨隨對象的創(chuàng)建而產(chǎn)生,隨著對象被垃圾回收而消失;