abstract关键字
抽象方法:只有方法的声明没有方法的实现,以分号结束:abstract int abstractMethod(int a);
1.有抽象方法的类必须是抽象类
2.抽象类不能实例化,抽象类是作为父类被继承的,抽象类的子类必须重写父类的抽象方法,并提供方法体,若没有重写全部的抽象方法,仍为抽象类
只要类中有一个抽象的方法,那么这个类就必须是抽象类
3.不能用abstract修饰属性、私有方法、构造器、静态方法,final方法。
public abstract class Animal {
public abstract void test();
public abstract void move();
}
class Dog extends Animal{
@Override
public void test() {
}
@Override
public void move() {
System.out.println("狗的移动方式是跑");
}
}
class Fish extends Animal{
@Override
public void test() {
}
@Override
public void move() {
System.out.println("鱼的移动方式是游");
}
}
abstract class Bird extends Animal{ //抽象类可以继承抽象类
@Override
public void move() {
}
public abstract void test();//抽象类中只要有一个抽象方法,类就必须是抽象类
}
思考:
1.一个抽象类可以定义构造器吗
抽象类可以有构造方法,只是不能直接创建抽象类的实例对象而已
抽象类不能实例化,new Vinicle()是非法的