抽象類和抽象方法以及和接口的區別

abstract

抽象類是不能被實例化的類,可以由其子類來實例化,就像模板一樣(就像貓科,犬科),目的是根據其格式和要求來新建對象。當一個類被聲明爲抽象類時,要在這個類前面加上修飾符abstract。

抽象類中的兩種方法:抽象方法和非抽象方法

                                   抽象方法前面由abstract關鍵字,這種方法只聲明返回的數據類型、方法名稱和所需的參數,沒 有方法體,也就是說抽象方法只需要聲明而不需要實現。

                                   非抽象方法和正常類中方法一樣。

抽象類中不一定包含抽象方法,但是包含抽象方法的類一定要被聲明爲抽象類。

抽象類中可以包含構造方法, 但是構造方法不能被聲明爲抽象。

abstract不能與private、static、final、native並列修飾同一個方法或類。



程序舉例:
abstract class Animal    //定義抽象類
{
    String str;
    Animal(String s)     //定義抽象類的一般方法
   {
        str=s;
   }
    abstract void eat();      //定義抽象方法
}
class Horse extends Animal     //定義繼承Animal的子類
{  
    String str;
    Horse(String s)
   {
      super(s);      //調用父類的構造方法
   }
    void eat()      //重寫父類的抽象方法
   {     
      System.out.println("馬吃草料!");
   }
}



抽象類和接口的區別

1.一個類可以實現多個接口,但只能繼承一個抽象類,它不能是貓科類同時還是犬科類

2.一個抽象類可以有若干抽象方法(可以是抽象的,也可以是非抽象的),接口裏的都是抽象方法,即使不用abstract關鍵字

3.抽象類可以有構造方法,而接口不能有

4.抽象類的修飾符可以是public ,private ,protected或無修飾符(包內可見),而接口的修飾符只能是public ,或無修飾符(包內可見)

5.抽象類是從object類派生而來,它繼承了object的clone()和equals()方法。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章