抽象類
如果一個類沒有足夠的信息來描述一個具體的對象腐螟,而需要其他具體的類來支撐它块仆,那么這樣的類我們稱它為抽象類。比如new Animal()急黎,我們都知道這個是產(chǎn)生一個動物Animal對象健提,但是這個Animal具體長成什么樣子我們并不知道琳猫,它沒有一個具體動物的概念,所以他就是一個抽象類私痹,需要一個具體的動物脐嫂,如狗、貓來對它進行特定的描述紊遵,我們才知道它長成啥樣雹锣。
在使用抽象類時需要注意幾點:
1、抽象類不能被實例化癞蚕,實例化的工作應(yīng)該交由它的子類來完成,它只需要有一個引用即可辉哥。
2桦山、抽象方法必須由子類來進行重寫攒射。
3、只要包含一個抽象方法的抽象類恒水,該方法必須要定義成抽象類会放,不管是否還包含有其他方法。
4钉凌、抽象類中可以包含具體的方法,當(dāng)然也可以不包含抽象方法御雕。
5、子類中的抽象方法不能與父類的抽象方法同名酸纲。
6、abstract不能與final并列修飾同一個類闽坡。
7栽惶、abstract 不能與private、static疾嗅、final或native并列修飾同一個方法。
代碼如下:
/**
* abstract 修飾的方法,要求非抽象子類必須實現(xiàn)基類里的抽象方法
* 只要類中存在抽象方法,要求該類必須是抽象類
*/
public abstract /*使用關(guān)鍵字修飾的類為抽象類*/class Animal {
public void eat(){
System.out.println("eat");
}
//abstract修飾的方法叫抽象方法
public abstract void howl();
}
public class Dog extends Animal {
@Override
public void howl() {
System.out.println("wang wang");
}
public void yao(){
System.out.println("yao");
}
}
public class Cal extends Animal {
@Override
public void howl() {
System.out.println("miao miao");
}
}
public class Main {
public static void main(String[] args) {
// write your code here
Dog dog = new Dog();
dog.howl();
Animal animal = new Cal();
animal.howl();
}
}