Java基礎之抽象類別和介面

來源:互聯網
上載者:User

標籤:

 

       抽象類別就是包含abstract方法的類,抽象類別可以包含非抽象方法,但抽象方法一定要定義在抽象類別中,抽象類別不可以執行個體化,抽象類別裡的抽象方法必須在具體的子類中實現。

具體抽象類別代碼進行分析:

public abstract class Animal {//  抽象類別裡定義的抽象方法必須在具體子類中實現,所以抽象類別裡不能有抽象構造方法或者抽象靜態方法//  public abstract Animal(){//      //  }//  public abstract static void sleep();   public Animal(){        }  public String eye;  //普通成員變數  public abstract void eat();   //abstract方法  public void drink() {  //非抽象方法      System.out.println("All Animal drink water!");  }}abstract class CrawlAnimal extends Animal{   //如果父類中有子類未實現的方法,該類應定義為抽象類別  public abstract void jump();  }abstract class FlyAnimal extends Animal{  public abstract void fly();}class Dog extends CrawlAnimal{ //抽象類別是繼承  @Override  public void jump() {      System.out.println("Dog is jumping!");        }  @Override  public void eat() {      System.out.println("Dog eat bone");        }  @Override  public void drink(){      System.out.println("Dog drink milk");  }  }}

 

       介面就是抽象類別的一個特例,介面中的所有方法都是抽象的。介面的成員變數預設為public static final類型,方法預設為public abstract類型。

具體介面代碼如下:

public interface AnimalInterface {    //介面不允許有構造方法//    public AnimalInterface(){//        //    }    public static final String eye ="black";//沒有普通成員變數,不可修改的靜態成員變數,需要初始設定變數    public abstract void eat();    void sleep(); //預設public abstract//    public static void jump(); 介面中不可以有靜態方法    }class CrawlAnimal2 implements AnimalInterface{ //介面是實現    @Override    public void eat() {        // TODO Auto-generated method stub            }    @Override    public void sleep() {        // TODO Auto-generated method stub            }    }

       抽象類別和介面的區別在於,

從構造方法,成員變數,方法,訪問類型,靜態方法和變數,繼承性 文法方面的不同:

   1.抽象類別可以有構造方法,介面中不能有構造方法。   

   2.抽象類別中可以有普通成員變數,介面中沒有普通成員變數

   3.抽象類別中可以包含非抽象的普通方法,介面中的所有方法必須都是抽象的,不能有非抽象的普通方法。   

   4. 抽象類別中的抽象方法的訪問類型可以是public,protected,但介面中的抽象方法只能是public類型的,並且預設即為public abstract類型。

   5. 抽象類別中可以包含靜態方法,介面中不能包含靜態方法

   6. 抽象類別和介面中都可以包含靜態成員變數,抽象類別中的靜態成員變數的訪問類型可以任意,但介面中定義的變數只能是public static final類型,並且預設即為public static final類型。

   7. 一個類可以實現多個介面,但只能繼承一個抽象類別。

兩者在應用上的區別: 介面更多的是在系統架構設計方法發揮作用,主要用於定義模組之間的通訊契約。而抽象類別在代碼實現方面發揮作用,可以實現代碼的重用。

 

  本文為學習筆記,如有不當,請大家指出共同學習改正,謝謝。

Java基礎之抽象類別和介面

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.