JAVA中抽象類的使用


  抽象類是從多個具體類中抽象出來的父類,它具有更高層次的抽象。抽象類體現的就是一種模板模式的設計,抽象父類可以只定義需要使用的某些方法,把不能實現的某些部分抽象成抽象方法,留給其子類去實現。具體來說,抽象類的使用有以下幾點要注意:

  1.抽象方法和抽象類必須使用abstract來修飾,其中抽象方法不能有方法體。

  2.抽象類不能被實例化。

  3.抽象類可以包含成員變量,方法(普通方法或抽象方法),構造器(抽象類的構造器不能用於創建實例,主要是被其子類調用),初始化塊,內部類(接口,枚舉)這五種成分。

  4.含有抽象方法的類只能定義成抽象類,而抽象類中可以沒有抽象方法。

 

  下面看具體的使用例子:

 

// 先在文件Animal.java 中定義一個抽象類
package animal;
public abstract class Animal
{
    public String name;
    public Animal(String name)
    {
        this.name = name;
    }
    public abstract void eat();
    public abstract void move();
}

 

    然后分別定義三個子類來實現這個抽象父類:

package animal;
public class Dog extends Animal
{
    public Dog(String name)
    {
        super(name);
    }
    
    public void eat()
    {
        System.out.println(name + " eat meat and grass.");
    }
    
    public void move()
    {
        System.out.println(name + " move with legs.");
    }
    
}


package animal;
public class Bird extends Animal
{
    public Bird(String name)
    {
        super(name);
    }
    
    public void eat()
    {
        System.out.println(name + " eat insect.");
    }
    
    public void move()
    {
        System.out.println(name + " move with wings.");
    }
    
}


package animal;
public class Fish extends Animal
{
    public Fish(String name)
    {
        super(name);
    }
    
    public void eat()
    {
        System.out.println(name + " eat algae.");
    }
    
    public void move()
    {
        System.out.println(name + " move with tail.");
    }
    
}

   可以看到三個子類繼承了父類的一個成員變量name, 並且分別實現了兩個抽象方法 eat() 和 move(). 然后我們定義一個測試類,並運行結果:

package animal;
public class Summary
{
    public static void main(String[] args)
    {
        Dog animal1 = new Dog("Shepherd");
        Bird animal2 = new Bird("Sparrow");
        Fish animal3 = new Fish("carp");
        System.out.println(animal1.name);
        animal1.eat();
        animal1.move();
        System.out.println(animal2.name);
        animal2.eat();
        animal2.move();
        System.out.println(animal3.name);
        animal3.eat();
        animal3.move();
    }
}



運行結果如下:

Shepherd
Shepherd eat meat and grass.
Shepherd move with legs.
Sparrow
Sparrow eat insect.
Sparrow move with wings.
carp
carp eat algae.
carp move with tail.

  那么初步的抽象類的使用就是這樣了,具體的細節還需要去多看書多實踐。

         


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM