abstract----见字知意--抽象
1.为什么我们要使用这个关键字
列举一个生动的例子,我们创建一个动物类,要声明一个行走的方法,方法没有返回值,没有参数列表等,但是具体怎么实现呢?不同种动物有不同的行走方式,如果实现具体的方法,就会表明所有动物都只有一种行走方法。但如果是一个空的方法,当被别人调用时会很尴尬。
例如: Animal a =new Animal():
a.move();
这时a就调用了一个空的方法,里面什么也没有。所以一定是不能实现的。我们就只声明方法,让子类去继承该类并且实现此方法。
方法声明格式:修饰符 返回值类型 方法名();
2.abstract的用途
1)abstract可以用来修饰类
例如:public abstract class Test{},Test此时就是抽象类。
1.1 抽象类与普通类的区别:
1.抽象类必须使用abstract进行修饰
2.抽象类不可以直接new对象,
3.抽象类中可以编写抽象方法(但不是一定要有抽象方法),而普通类中不可以。
1.2 编写抽象类的目的:
1.就是想让子类继承。
2.子类继承父类,必须实现父类中所有抽象方法,否则就要把自己变成抽象类。
2)abstract可以用来修饰方法
例如:public abstract void walk();此时该方法就是抽象方法。
2.1如果类中有抽象方法,那么该类一定要被声明为抽象类。
3.注意事项---不合群的关键字
3.1 private
abstract声明的方法是要被子类继承并且重写的,如果用private修饰,与相关问题冲突。
private修饰的方法可以被继承但是不可以被重写。
3.2 static
原因与以上相同,还有一点就是静态方法可以用类名直接调用,但是抽象方法没有具体的实现,调用无意义。
3.3final
final修饰的类不能被继承,声明的方法不能被重写,完全与abstract违背。