學習java接口知識
阿新 • • 發佈:2019-04-27
學習 一個 scn 接口 會有 適應 world ava 技術分享
學習java接口知識
//一個類最多只能有一個直接的父類。但是有多個間接的父類。 java是單繼承。 class ye_01{ String name; } class fu_01 extends ye_01{} class zi_01 extends fu_01{} public class Interface { public static void main(String[] args) { // TODO Auto-generated method stub zi_01 zi= new zi_01(); zi.name="bebe"; System.out.println(zi.name); } }
以上問題和java單繼承相違背,那麽就需要用接口來解決。
接口:拓展功能的。
接口的定義格式:
interface 接口名{ }
實現接口的格式:
class 類名 implements 接口名{ }
如下代碼:
interface A { // 接口A, // 成員變量 public static final int i = 10; // 成員函數 public void print(); } public class Interface_02 { public static void main(String[] args) { // TODO Auto-generated method stub Interface_02 interface_02 = new Interface_02(); interface_02.print(); } // 實現接口中的方法 public void print() { System.out.println("這個是接口中的print方法..."); } }
接口要註意的事項 :
1. 接口是一個特殊的類。
2. 接口的成員變量默認的修飾符為: public static final 。那麽也就是說接口中的成員變量都是常量。
3. 接口中 的方法都是抽象的方法,默認的修飾符為: public abstract。
4. 接口不能創建對象,使用implements引用。
5. 接口是沒有構造方法的,因為接口中的變量已經初始化了,沒有必要有構造方法。
6. 接口是給類去實現使用的,非抽象類實現一個接口的時候,必須要把接口中所有方法全部實現。
然後我們看看怎麽解決帶橡皮的鉛筆的問題:
//普通的鉛筆類 class Pencil{ String name; public Pencil(String name){ this.name = name; } public void write(){ System.out.println(name+"沙沙的寫..."); } } //橡皮接口 interface Eraser{ public void remove(); } //帶橡皮的鉛筆 class PencilWithEraser extends Pencil implements Eraser { public PencilWithEraser(String name){ super(name); } public void remove(){ System.out.println("塗改,塗改...."); } } class Demo8 { public static void main(String[] args) { //System.out.println("Hello World!"); PencilWithEraser p = new PencilWithEraser("2B鉛筆"); p.write(); p.remove(); } }
接口的作用:
1. 程序的解耦。 (低耦合)--接口最重要的優勢
2. 定義約束規範。(項目組長和項目組長的責任)--次重要
3. 拓展功能。--最基本的
例如開發一個網站:
每個模塊都會有增、刪、查、改;
每個項目都需要後期的維護(不斷優化代碼、優化功能);【社會招聘-2天的適應期就開始幹活了】
看網站代碼的技巧:只看一個模塊即可,因為大項目一般大家用的都是共同模塊。
/* * 需求:在現實生活中有部分同學在學校期間只會學習,但是有部分學生除了學習外還會賺錢。 * interface (定義接口) * implements (實現接口) * * */ //普通的學生類 class Student{ String name; public Student(String name){ this.name = name; } public void study(yunshenggw.cn/){ System.out.println(name+"好好學習"); } } //掙錢是學生拓展的功能---定義在接口上 interface Money{ public void makeMoney(); } //會掙錢的學生 class MoneyStudent extends Student implements Money{ public MoneyStudent(String name){ super(name); } public void makeMoney(){ System.out.println(name+"好好掙錢,然後交學費!"); } } public class Interface_03 { public static void main(String[] args) { // TODO Auto-generated method stub Student s = new Student("李金華"); s.study(); //s.makeMoney(); MoneyStudent m = new MoneyStudent("孫雙雙"); m.study(); m.makeMoney(); } }
類與接口之間的關系:實現的關系
package test_01;
/*
類與接口之間關系: 實現關系。
類與接口要註意的事項:
1. 非抽象類實現一個接口時,必須要把接口中所有方法全部實現。
2. 抽象類實現一個接口時,可以實現也可以不實現接口中的 方法。
3. 一個類可以實現多個接口 。
疑問: java為什麽不支持多繼承,而支持了多實現呢?
class A{ public void print(www.tianjiuyule178.com ){ System.out.println("AAAAAA"); } } class B{ public void print(baihuiyulegw.com){ System.out.println("BBBBBB"); } } class C extends A ,B{ } new C().print(); //調用之後就會很尷尬,因為有沖突 答案: 接口是調用自己實現的那一個就可以,不存在沖突。而繼承是使用父類的方法,可能會發生沖突; 接口與接口之間關系: 繼承關系。 接口與接口之間要註意事項:一個接口是可以繼承多個接口的。 */
interface Ab{ public void print(); } interface Ac extends Ab{ //Ac繼承了Ab public void getArea(www.yunsengyule.com); } //abstract class ANimal implements Ab,Ac{ // public void print(){ // System.out.println(" 實現 Ab 接口"); // } // public void getArea(){ // System.out.println(" 實現 Ac 接口"); // } // //} public class Interface_04 implements Ac{ public static void main(String[] args) { // TODO Auto-generated method stub Interface_04 interface_04= new Interface_04(); interface_04.getArea(); interface_04.print(); } public void print(www.gouyiflb.cn){ System.out.println(" 實現 Ab 接口"); } public void getArea(www.yscylept.com){ System.out.println(" 實現 Ac 接口"); }
學習java接口知識