JAVA基礎(56)---抽象類
阿新 • • 發佈:2018-11-19
抽象類
面向物件的程式設計:類的設計是從抽象到具體,在抽象的過程中,又是從具體到抽象
abstarct:修飾類,使用該關鍵字修飾的類就是抽象類
修飾方法,該方法就是抽象方法
特點
- 不能例項化(不能建立物件)
- 存在構造方法:就是為了建立子類物件來使用的(就是為了讓子類中能夠訪問父類中的成員)
- 抽象類中不一定要有抽象方法:就是要使用該類中的成員屬性和方法,必須繼承該類
- 存在抽象方法的類,必須是抽象類
- 如果子類中沒有重寫抽象類中的所有的抽象方法,那麼該子類也必須是抽象的,直到子類重寫了所有的抽象方法
意義
是用來被繼承的
抽象類的構成
成員變數、成員方法、構造方法、常量、靜態變數、構造程式碼塊、靜態程式碼塊
抽象方法和具體的方法之間的區別:抽象方法沒有方法體,只有方法的宣告,以分號結尾(就是說方法後面沒有大括號)
抽象方法存在的意義:是用來被重寫的
抽象類的子類必須去實現抽象類中的所有的抽象方法
關於抽象類中的幾個小問題:
- 抽象方法能不能使用private修飾?不能。因為 private 修飾的方法不能被繼承
- 抽象的方法或類,能不能使用final修飾?不能。因為 final 修飾的類不能被繼承, final 修飾的方法不能被重寫
- 抽象方法能不能使用static修飾?不能。因為使用 static 修飾的方法不能被重寫
public abstract class Animal { private String name; private int age; final int LEG = 4; static int num = 10; { System.out.println("Animal的構造程式碼塊...."); } static { System.out.println("Animal的靜態程式碼塊...."); } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public Animal() { System.out.println("Animal 的無參構造方法..."); } public abstract void showInfo() ; public abstract void testMethod(); }
public class Dog extends Animal{
public Dog() {
this.setName("旺財");
this.setAge(2);
}
public void showInfo() {
System.out.println(this.getName()+"---"+this.getAge()+"--"+ this.LEG + "--" + num);
}
@Override
public void testMethod() {
// TODO Auto-generated method stub
}
}
import org.lanqiao.abstarct.demo.Animal;
import org.lanqiao.abstarct.demo.Dog;
public class AbstractTest {
public static void main(String[] args) {
Animal a = new Dog();
a.showInfo();
}
}