1.java中的抽象方法代表着这个方法只有方法头,而没有方法体,方法头用abstract修饰。关键在于抽象,就好比于生病了要吃药,但是吃的什么药另说,这个另说即是子类继承后所要完成的事,也就是为什么不需要方法体的原因,这体现了java的继承性,使得java可拓展。
2.同时,这个抽象的概念也含有只要时我的继承类就必须要有抽象方法的特性,例如动物中进食的要求,所以只要对这个抽象类进行继承后就必须重写抽象方法。当然也存在不重写的情况,那就是打不过就加入,自己也是一个抽象类。可以想象成动物和动物的猫科动物的关系。
3.抽象方法是抽象类的特点而得来,故其也必须放在一个抽象类里。
4.抽象类里也可以放入普通方法,这也是为了避免重复性代码。
5.抽象类不允许被实例化,因为它都足够抽象了,当然难以找到一个去实例对象。例如动物,水果
5.abstract不能和static一起使用毕竟抽象方法,且抽象类不可以被实例化,abstract方法也无方法体,调用了也没有意义,所以并不被允许。
public class AbstractMethods {
public static void main(String[] args) {
Animal.declaration();
// new Animal().eat();
}
}
abstract class Animal{
public abstract void eat();
public static void declaration(){
System.out.println("我不是抽象方法,也可以在抽象类中");
}
}
abstract class Feline{
abstract void eat();
//不能和static一起使用
// abstract static void run();
}
abstract class Cat extends Feline{
@Override
void eat() {
System.out.println("猫粮");
}
}