天天看點

抽象類abstract

抽象類:當描述一個類的時候,如果不能确定功能函數如何定義,那麼該類就可以定義為抽象類,功能函數應該描述為抽象函數。

抽象類的好處:強制要求子類一定要實作指定的方法。

abstract不能與以下關鍵字共同修飾一個方法

1.abstarct不能與private共同修飾一個方法

2.abstract不能與static共同修飾一個方法

3.abstract不能喝final共同修飾一個方法

抽象類需要注意細節:

    1.如果一個函數沒有方法體,那麼該函數必須要使用abstract修飾,把該函數修飾成抽象的函數;

    2.如果一個類出現了抽象的函數,那麼該類也必須使用abstract修飾;

    3.如果一個非抽象類繼承了抽象類,那麼必須要把抽象類的所有抽象方法全部實作;

    4.抽象類可以存在非抽象方法,也可以存在抽象的方法;

    5.抽象類可以沒有抽象方法;

 6.抽象類是不能建立對象的;

    因為:因為抽象類是存在抽象方法的,如果能讓抽象類建立對象的話, 那麼使用抽象的對象調用抽象方法是沒有任何意義的。

可以存在構造函數的,其構造函數是提供給子類建立對象的時候初始化父類的屬性的;

abstract class Animal
{
  String name;
  String color;
  public Animal(String name, String color){
    this.name = name;
    this.color = color;
  }
  public abstract void eat();
  public void sleep(){
    System.out.println(name + "都能睡覺。。。。");
  }
}
class Dog extends Animal
{
  public Dog(String name, String color){
    super(name, color);
  }
  public void eat(){
    System.out.println(name+"吃骨頭。。。。");
  }
}
class Demo49 
{
  public static void main(String[] args) 
  {
  //  Animal dog = new Animal("哈士奇", "白色");//抽象類不允許建立對象
    Dog dog = new Dog("哈士奇", "白色");
    dog.eat();
    System.out.println("Hello World!");
  }     
}