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