1. 程式人生 > >JAVA基礎(56)---抽象類

JAVA基礎(56)---抽象類

抽象類

面向物件的程式設計:類的設計是從抽象到具體,在抽象的過程中,又是從具體到抽象

abstarct:修飾類,使用該關鍵字修飾的類就是抽象類

                 修飾方法,該方法就是抽象方法

特點

  1. 不能例項化(不能建立物件)
  2. 存在構造方法:就是為了建立子類物件來使用的(就是為了讓子類中能夠訪問父類中的成員)
  3. 抽象類中不一定要有抽象方法:就是要使用該類中的成員屬性和方法,必須繼承該類
  4. 存在抽象方法的類,必須是抽象類
  5. 如果子類中沒有重寫抽象類中的所有的抽象方法,那麼該子類也必須是抽象的,直到子類重寫了所有的抽象方法

意義

           是用來被繼承的

抽象類的構成

成員變數、成員方法、構造方法、常量、靜態變數、構造程式碼塊、靜態程式碼塊

抽象方法和具體的方法之間的區別:抽象方法沒有方法體只有方法的宣告,以分號結尾(就是說方法後面沒有大括號)

抽象方法存在的意義:是用來被重寫的

抽象類的子類必須去實現抽象類中的所有的抽象方法

關於抽象類中的幾個小問題:

  • 抽象方法能不能使用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();
	}
}