1. 程式人生 > >學習java接口知識

學習java接口知識

學習 一個 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接口知識