抽象類:當描述一個類的時候,如果不能确定功能函數如何定義,那麼該類就可以定義為抽象類,功能函數應該描述為抽象函數。
抽象類的好處:強制要求子類一定要實作指定的方法。
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!");
}
}