本篇內(nèi)容介紹了“JAVA接口與抽象類怎么使用”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!
為慶元等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及慶元網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都網(wǎng)站制作、網(wǎng)站設(shè)計、慶元網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!
當(dāng)需要從幾個類中派生出一個類,繼承他們所有的屬性和方法,JAVA沒有多重繼承需要用接口實現(xiàn)
從幾個類中抽取出一些共同的行為特征,而他們之間又沒有is-a的關(guān)系,也需要借助接口實現(xiàn)
接口本質(zhì)是契約,規(guī)范
接口中使用interface來定義
接口和類是兩個不同的結(jié)構(gòu)
接口中不能定義構(gòu)造器(也就不能實例化)
接口通過類來實現(xiàn)implements
JAVA類可以實現(xiàn)多個接口格式:class AA extends BB interface CC,DD
接口與接口之間可以繼承,并且可以多繼承
接口體現(xiàn)了多態(tài)性
public class UsbTest { public static void main(String[] args) { Computer com =new Computer(); Flash flash=new Flash(); com.transferData(flash); // USB usb =new Flash() com.transferData(new Printer()); /* * U盤開始工作 * 傳輸數(shù)據(jù) * U盤結(jié)束工作 * 打印機開始工作 * 傳輸數(shù)據(jù) * 打印機結(jié)束工作 * * */ }}class Computer{ public void transferData(USB usb){ usb.start(); System.out.println("傳輸數(shù)據(jù)"); usb.stop(); }}interface USB{ void start(); void stop();}class Flash implements USB{ @Override public void start() { System.out.println("U盤開始工作"); } @Override public void stop() { System.out.println("U盤結(jié)束工作"); }}class Printer implements USB{ @Override public void start() { System.out.println("打印機開始工作"); } @Override public void stop() { System.out.println("打印機結(jié)束工作"); }}
JDK8的寫法
接口中定義的靜態(tài)方法,只能通過接口調(diào)用
通過實現(xiàn)類的對象,可以實現(xiàn)接口中的默認方法
如果子類(或者實現(xiàn)類)繼承的父類和實現(xiàn)的接口中聲明了同名同參數(shù)方法,如果子類沒有重寫該方法,調(diào)用的是父類中同名同參數(shù)方法
public class JDK8Test { public static void main(String[] args) { SubClass sub =new SubClass(); CompareA.methods1(); sub.methods2(); /* * Compare 北京 * Compare 上海 */ }}class SubClass implements CompareA{}interface CompareA{ public static void methods1() { System.out.println("Compare 北京"); } public default void methods2() { System.out.println("Compare 上海"); }}
代理模式就是為其他對象提供一種代理以控制對這個對象的訪問
實例
public class NetWorkTest { public static void main(String[] args) { Server server=new Server(); ProxyServer proxyServer=new ProxyServer(server); // 放的是被代理對象進去 proxyServer.browse(); // 調(diào)用的是代理對象,但結(jié)果是真實對象的方法被調(diào)用 /* * 檢查工作 * 真實服務(wù)器訪問網(wǎng)絡(luò) */ }}interface NetWork{ void browse();}// 被代理類class Server implements NetWork{ @Override public void browse() { System.out.println("真實服務(wù)器訪問網(wǎng)絡(luò)"); }}// 代理類class ProxyServer implements NetWork{ private NetWork work; public ProxyServer(NetWork work){ this.work=work; } public void check(){ System.out.println("檢查工作"); } @Override public void browse() { check(); work.browse(); }}
JAVA允許將一個類A聲明在另一個類B中,則類A是內(nèi)部類,類B是外部類
內(nèi)部類分類
成員內(nèi)部類
靜態(tài) static
非靜態(tài)
局部內(nèi)部類
方法內(nèi)
代碼塊內(nèi)
構(gòu)造器內(nèi)
實例化內(nèi)部類對象
public class InnerClassTest { public static void main(String[] args) { // 實例化Dog,靜態(tài)類 Pseson.Dog dog=new Pseson.Dog(); dog.eat(); // 吃骨頭 // 實例化Cat,非靜態(tài)類 Pseson p1 =new Pseson(); Pseson.Cat cat=p1.new Cat(); cat.eat(); // 貓吃魚 }}class Pseson{ String name; int age; public void eat(){ System.out.println("吃飯"); } static class Dog{ String name; int age; public void eat(){ System.out.println("吃骨頭"); } } class Cat{ public void eat(){ System.out.println("貓吃魚"); } }}
調(diào)用外部類結(jié)構(gòu)
public class InnerClassTest { public static void main(String[] args) { // 實例化Cat,非靜態(tài)類 Pseson p1 =new Pseson(); Pseson.Cat cat=p1.new Cat(); cat.eat(); cat.display("小花"); /* * 小花 * 波斯貓 * 人 */ }}class Pseson{ String name="人"; int age; public void eat(){ System.out.println("吃飯"); } static class Dog{ String name; int age; public void eat(){ System.out.println("吃骨頭"); } } class Cat{ String name="波斯貓"; public void eat(){ System.out.println("貓吃魚"); } public void display(String name){ System.out.println(name); // 方法中name System.out.println(this.name); // 內(nèi)部類中name System.out.println(Pseson.this.name); // 外部類中name } }}
接口與抽象類
相同點:不能實例化;都包含抽象方法;能被繼承
不同點:抽象類有構(gòu)造器,接口沒有構(gòu)造器;抽象類只有單繼承,而接口可以多繼承;抽象類extands繼承,接口implements實現(xiàn)
“JAVA接口與抽象類怎么使用”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!