Java? ? ?? ?? ??? ??? ????. 1. ??? ??? ???? ?? ??? ??? ?? ?????? ?? ??? ???? ?? ?? ???? ??? ??, ??? ???? ?? ??? ??? ?? ?? ? ??? ?????. ????. 2. ???? ?? ???? ?? ???? ?? ??? ???? ???? ?? ???? ????? ?? ?????. 3. ???? ?? ??? ??? ?? ??? ??? ????? ?? ??? ???? ?????.
? ????? ?? ??: windows7 ???, java8 ??, DELL G3 ???.
Java? ? ?? ?? ??
?? ??? ? ?? ?? ??: ???, ??, ???.
???:
- ??? ??? ???? ?? ??? ??? ?? ?????? ?? ??? ???? ????. ?? ??? ??? ?? ?? ? ??? ????? ???? ???? ?? ?????.
??:
- ?? ???? ?? ???? ?? ??? ???? ?????(??? ? ?? ????? ??? ?? ??) ?? ??? ???? ?????.
???:
- ?? ?? ??? ?? Accept, ?? ?? ???? ?? ????, ?? ??? ??? ??? ???? ???? ?? ???? ?? ????? ?? ?? ??? ?????
1) ?? is Encapsulation
??: ??? ?? ?? ?? ??? ??? ???, ??? ?? ? ?? ??? ?????.
??? ???: private(??? ???? ?? ???? ? ????? ???)
2) ?? ??? ??
? ?? ? ? ?? ??? ???? ?? ??? ?? ?????.
??: ???? ??? ??? ??? ???? ?? ????!
- ???? ??? ??? ???? ?? ?? ??? ??? ?????.
- ?? ??:
- Assignment: setXXX() //??? ????? ??? ????? ?????
- Value: getXXX() //?? ????? ??? ?? ?? ?????
3) ?
public static void main(String[] args) { int a; Num num = new Num(); // 傳入值100 num.setNum(100); System.out.println(num.getNum()); }
private int a; // 在調(diào)用get方法時(shí),返回本類a的值 public int getNum() { return a; } // 接受傳入的值100,并賦值給本類的a public void setNum(int num) { this.a = num; }
4) ??? ??? ???
?? ?? ??? ??? ??? ???? ?? ???? ????? ??? ??? ?????.
5) ??
get/set ???? ?? ??? ??? ?? ??? ???? ? ?? ??? ????, ??? ???? ???? ???? ???? ? ????.
1) ???? ? ??
- ???? ? ??? ??? ?? ?? ? ??? ????? ???? ????.
- ? ??? ?? ?? ??? "is a" ??? ???? ???.
2) ?? ??? ??
?????? ?? ?? ?? ?? ??? ??? ?? "is a" ??? ?????.
?? ????, ?? ?????, ?? ?????.
"?"? ?? ????? ?? ????? ??? ? ???, ? ??? ?? ??? ?? ????? ???? ???.
??? ????? ??? ?? ???? ?? ?? ???? ??????.
??? ???? ??? ?? ???? Object ???? ??????. (?? ?? ???? ??)
3) ??
??: class subclass extends parent class { } //?? ??? ?? ? ?? ?????? ??? ??
public class 子類名 extends 父類名{ //代碼塊 }
Application : ?? ?? ?? ?? ?? ???? ?? ???? ??? ???? ????? ?? ???? ??? ??? ???? ??? ? ????.
??: ??? ????? ???? ?? ??? ??? ???? ??????.
4) ??? ??
Java? ?? ?????. ???? ??? ?? ?? ???? ?? ? ??? ??? ??? ???? ??? ???? ???? ??? ? ????.
5) ?? ???
??? ???: ???? ??? ???? ? ???? ??? ???? ??? ???? ??? ? ????.
Private ?? ?? ? ???: ? ????? ???? ??? ??? ?????.
?? ???? ?? ???? ??? ???? ??? ????? ??? ???? ?????. ?, ??? ?????? ? ? ?? ??? ??? ?????.
1) ??? ???/???
??? ??? ??:
- ??? ??? ???? ??? ?? ???? ?????.
- ?? ? ??? ?? ??? ?? ?? ???? ???? ???.
- ??? ???? ?? ???? ????? ?? ????? ?? ? ????.
??? ??? ??:
?? ???? ?? ??? ???? ???? ? ?? ???? ???? ???? ??? ? ?? ?????.
??? ???? ??:
?? ???? ?? ??? ???? ????? ?? ??? ???? ?? ??? ???? ??????.
?? ???? ?? ??? ???? ????? ?? ??? ??? ?? ??? ????? ??? ? ????.
?? ??? ??? ??? ??? ??? ?? ???? ?????.
父類的構(gòu)造方法無(wú)法重寫(xiě),只能被覆蓋。
示例:
//父類 public class Animal { // 父類中吃的方法會(huì)輸出“玩玩玩” public void play() { System.out.println("玩玩玩"); } // 父類中睡的方法會(huì)輸出“睡睡睡” public void sleep() { System.out.println("睡睡睡"); } }
/** * 狗類繼承 父類 */ public class Dog extends Animal { // 進(jìn)行方法重寫(xiě),將方法重寫(xiě)輸出為“狗玩飛碟” public void play() { System.out.println("狗玩飛碟"); } }
public class Test { public static void main(String[] args) { // 實(shí)例化寵物對(duì)象 Dog d = new Dog(); d.play(); d.sleep(); } }
運(yùn)行輸出:
2)方法重寫(xiě)與方法重載的區(qū)別
相同點(diǎn):方法名相同
不同點(diǎn):
重載:參數(shù)列表不同,返回值與訪問(wèn)修飾符無(wú)關(guān)
重寫(xiě):參數(shù)列表相同,返回值相同或其子類,訪問(wèn)修飾符不能比父類更嚴(yán)
1)super關(guān)鍵字
super關(guān)鍵字可在子類中訪問(wèn)父類的方法。
- 使用”super.”的形式訪問(wèn)父類的方法,進(jìn)而完成在子類中的復(fù)用;
- 再疊加額外的功能代碼,組成新的功能。
2)super調(diào)用父類無(wú)參構(gòu)造
super():表示調(diào)用父類無(wú)參構(gòu)造方法。如果沒(méi)有顯示書(shū)寫(xiě),隱式存在于子類構(gòu)造方法的首行。
3)super調(diào)用父類有參構(gòu)造
super():表示調(diào)用父類無(wú)參構(gòu)造方法。
super(實(shí)參):表示調(diào)用父類有參構(gòu)造方法。
參構(gòu)造被執(zhí)行
4)this與super
this或super使用在構(gòu)造方法中時(shí),都要求在首行。
當(dāng)子類構(gòu)造中使用了this()或this(實(shí)參),即不可再同時(shí)書(shū)寫(xiě)super()或super(實(shí)參),會(huì)由this()指向構(gòu)造方法完成super()調(diào)用。
class A{ public A(){ System.out.println(( "A-無(wú)參構(gòu)造")); } public A(int value) { System.out.println(("A-有參構(gòu)造")); } } class B extends A{ public B(){ super(); System.out.println( "B-無(wú)參構(gòu)造"); } public B(int value) { // super();這兩貨不能跟同時(shí)存在 this(); System.out.println(("B-有參構(gòu)造")); } }
概念:父類引用指向子類對(duì)象,從而產(chǎn)生多種形態(tài)。
二者具有直接或間接的繼承關(guān)系時(shí),父類引用可指向子類對(duì)象,即形成多態(tài)。
父類引用僅可調(diào)用父類所聲明的屬性和方法,不可調(diào)用子類獨(dú)有的屬性和方法。
1)多態(tài)的應(yīng)用
方法重載可以解決接收不同對(duì)象參數(shù)的問(wèn)題,但其缺點(diǎn)也比較明顯。
- 首先,隨著子類的增加,Master類需要繼續(xù)提供大量的方法重載,多次修改并重新編譯源文件。
- 其次,每一個(gè)feed方法與某一種具體類型形成了密不可分的關(guān)系,耦合太高。
場(chǎng)景一:使用父類作為方法形參實(shí)現(xiàn)多態(tài),使方法參數(shù)的類型更為寬泛。
public class Animal { // 父類中吃的方法會(huì)輸出“玩玩玩” public void play() { System.out.println("玩玩玩"); } // 父類中睡的方法會(huì)輸出“睡睡睡” public void sleep() { System.out.println("睡睡睡"); } }
/** * 狗類繼承 父類 * * * */ public class Dog extends Animal { // 狗類特有的方法“狗吃狗糧” public void eat() { System.out.println("狗吃狗糧"); } }
public class Test { public static void main(String[] args) { // 實(shí)例化寵物對(duì)象 Animal d = new Dog(); d.play(); d.sleep(); // The method eat() is undefined for the type Animal // 對(duì)于類型動(dòng)物,eat()方法未定義 // 當(dāng)我們?nèi)フ{(diào)用子類對(duì)象的特有方法時(shí),就會(huì)爆出上面的錯(cuò)誤提示 // 如果想要實(shí)現(xiàn)子類特有方法,就必須要強(qiáng)轉(zhuǎn) // d.eat(); ((Dog) d).eat(); } }
運(yùn)行輸出:
場(chǎng)景二:使用父類作為方法返回值實(shí)現(xiàn)多態(tài),使方法可以返回不同子類對(duì)象。
示例:
//動(dòng)物類 父類 public class Animal { public void food() { System.out.println("..."); } }
//用extends關(guān)鍵字,繼承父類屬性 public class Dog extends Animal { public void food() { System.out.println("狗吃狗糧"); } public void runing() { System.out.println("一直跑跑跳跳"); } }
//用extends關(guān)鍵字,繼承父類屬性 public class Fish extends Animal { public void food() { System.out.println("大魚(yú)吃小魚(yú),小魚(yú)吃蝦米"); } public void swimming() { System.out.println("小魚(yú)兒,一直游"); } }
public class Master { // 傳入你的動(dòng)物,并去給它喂食 public void food(Animal animal) { System.out.println("喂食"); animal.food(); } }
import java.util.Scanner; public class Shopping { // 你沒(méi)有動(dòng)物,所以animal為空 Animal animal = null; // 判斷你要購(gòu)買的寵物,并返回寵物類(狗、魚(yú)) public Animal shopping(int a) { if (a == 1) { animal = new Dog(); } else if (a == 2) { animal = new Fish(); } // this.animal=animal; return animal; } public void showMenu() { Scanner input = new Scanner(System.in); System.out.println("歡迎來(lái)到一只寵物寵物店"); System.out.println("請(qǐng)選擇喜歡的寵物:"); System.out.println("1.狗 2.魚(yú) "); int a = input.nextInt(); Animal animal = shopping(a); Master mm = new Master(); mm.food(animal); // 用instanceof判斷你買的是狗還是魚(yú)。 // 狗就執(zhí)行狗的屬性和方法,魚(yú)就執(zhí)行魚(yú)的屬性和方法 if (animal instanceof Dog) { Dog d = (Dog) animal; d.runing(); } else if (animal instanceof Fish) { Fish f = (Fish) animal; f.swimming(); } } }
//測(cè)試類 public class text { public static void main(String[] args) { Shopping shop = new Shopping(); shop.showMenu(); } }
運(yùn)行結(jié)果:
2)多態(tài)的靜態(tài)和動(dòng)態(tài)實(shí)現(xiàn)
動(dòng)態(tài)綁定
:即為重寫(xiě)/覆蓋,方法的重寫(xiě)
動(dòng)態(tài)綁定也叫后期綁定,在運(yùn)行時(shí),虛擬機(jī)根據(jù)具體對(duì)象實(shí)例的類型進(jìn)行綁定,或者說(shuō)是只有對(duì)象在虛擬機(jī)中運(yùn)行創(chuàng)建了之后,才能確定方法屬于哪一個(gè)對(duì)象實(shí)例的
- 根據(jù)實(shí)際對(duì)象是什么,就去找相應(yīng)對(duì)象方法去執(zhí)行。
- 動(dòng)態(tài)綁定是在運(yùn)行時(shí)才會(huì)執(zhí)行(例如重寫(xiě)的方法)。
靜態(tài)綁定
:即為重載,方法的重載
一個(gè)方法的參數(shù)在編譯階段常被靜態(tài)地綁定,它是根據(jù)參數(shù)列表的不同來(lái)區(qū)分不同的函數(shù),通過(guò)編輯之后會(huì)變成兩個(gè)不同的函數(shù)
- 根據(jù)類型找相應(yīng)的屬性或者靜態(tài)變量。
- 靜態(tài)綁定是在編譯時(shí)執(zhí)行(如成員變量,靜態(tài)方法)。
更多編程相關(guān)知識(shí),請(qǐng)?jiān)L問(wèn):編程教學(xué)??!
? ??? ??? ? ?? ?? ??? ??????? ?? ?????. ??? ??? PHP ??? ????? ?? ?? ??? ?????!

? AI ??

Undress AI Tool
??? ???? ??

Undresser.AI Undress
???? ?? ??? ??? ?? AI ?? ?

AI Clothes Remover
???? ?? ???? ??? AI ?????.

Clothoff.io
AI ? ???

Video Face Swap
??? ??? AI ?? ?? ??? ???? ?? ???? ??? ?? ????!

?? ??

??? ??

???++7.3.1
???? ?? ?? ?? ???

SublimeText3 ??? ??
??? ??, ???? ?? ????.

???? 13.0.1 ???
??? PHP ?? ?? ??

???? CS6
??? ? ?? ??

SublimeText3 Mac ??
? ??? ?? ?? ?????(SublimeText3)

settings.json ??? ??? ?? ?? ?? ?? ?? ??? ??? VSCODE ??? ??? ???? ? ?????. 1. ??? ?? ?? : Windows? C : \ Users \\ AppData \ Roaming \ Code \ User \ Settings.json, MacOS IS /users//library/applicationsupport/code/user/settings.json, linux? /home//.config/code/user/settings.json; 2. Workspace ?? ?? : .vscode/settings project root ????

JDBC ????? ???? ????? ?? ?? ?? ??? ?? ?? ??? ?? ? ?? ??? ?? ?? ?? ??? ???????. 1. ????? ????? Conn.SetAutoCommit (False)?? ??????. 2. ??? ? ????? ?? ?? SQL ??? ?????. 3. ?? ??? ??? ?? Conn.commit ()?? ???? ??? ???? ???? ?? ??? ???? Conn.Rollback ()?? ??????. ???, ? ??? ???? ????, ??? ???? ????, ?? ??? ??? ?? ??? ??? ???? ? ???????. ?? ?? ?? ???? ????? ??? ???? ?? ?? ???? ???? ??? ????? ?? ??? ??? ? ?? ???? ?? ????.

??? (DI) ISADESIGNPATTORNWHEREWHEDROUDIVESTESTESTETESTERGROWCONSTRUCTOR, 2.SPRINGFRAMEWWERTHUSENONTATIONS? ??@autowiredWithjava ?? CONCUTTATIONS LIKERWITHCONSTRUCTOR, ORFIELDINGESS.2.SPRINGFRAMEWWERTHUSENNOTATIONS

itertools.combinations? ?? ??? ???? ??? ?? ??? ???? ?? ? ?? ?? (?? ???)? ???? ? ?????. ???? ??? ????. 1. ?? ??? ??? ?? ( 'a', 'b'), ( 'a', 'c') ? ???? 2 ?? ?? ??? ?????. 2. ?? ??? ??? "ABC"? "ABD"? ?? ???? 3 ? ??? ???; 3. ? ??? ?? 1 5 = 6? ?? ?? ?? ??? ??? ?????. ?? ?? ??? ???????. ??? ??? ??? ??? ???? ??????, ??? AB? BA? ???? ???? ??, ??? ?? ??? ????.

???? ?? ?? ?? ?? ???? ?? ???? ???? ? ???? ?????. 1. @pytest.fixture ?????? ???? ???? ??????. 2. ??? ???? ???? ??? ???? ??; 3. ?? ?? ??? ?? ? ?? ??; 4. ??, ?? ?? ?? ?? ?? ??? ?? ?? ??; 5. ?? ???? Conftest.py? ???? ??? ?? ??? ???? ???? ?? ?? ? ??? ?? ??????.

thejvmenablesjava? "WriteOnce, Runynywhere"??? ?? excodecodethroughfourmaincomponents : 1. theclassloadersubsystemloads, ??, ? intinitializes.classfilesusingbootsprap, extension, andapplicationclassloaders, ensuringsecureandlazyclasloa

?? ?? ? ?? ???? ???? ?? Java.Time ???? ???? ??????. 2. LocalDate, LocalDateTime ? LocalTime? ?? ?? ??? ??? ?????. 3. () ???? ???? ?? ??? ??? ????. 4. ???/???? ??? ???? ??? ????? ??? ??????. 5. ZonedDateTime ? Zoneid? ???? ???? ??????. 6. DateTimeFormatter? ?? ?? ? ?? ?? ?? ???; 7. ??? ?? ?? ?? ??? ????? ?? ??????. ?? Java? ?? ??? ???? ??? ??? ???? Java.Timeapi ??? ?? ??? ???????.

chromecanopenlocalfiles likehtmlandpdfsbyusing "OpenFile"OrdraggingTheMintoTheBrowser; ensuretHeadDressStartSwithFile : ///; 2.SecurityRestrictionSblockajax, LocalStorage, andcross-folderaccessonfile : //; usealocalsertpython-mhtpython-mhtpython-mhtppy
