抽象类的作用
抽取共性时,无法确定方法体,因为不同的子类有不同的实现,这个时候就可以在父类中定义抽象方法强制子类进行重写。
抽象类的定义格式
public abstract class 类名{}
抽象方法的定义格式
//不能用private、final、static修饰,这些修饰方法就不能重写
public abstract 返回值类型 方法名(参数列表);
使用注意事项
1)抽象类中可以有成员变量、构造方法供子类使用
2)抽象方法没有方法体;
3)抽象方法所在的类一定是抽象类;抽象类中可以没有抽象方法;
4)抽象类不能直接实例化对象,它是被用作父类来让子类进行继承的;
5)继承了抽象类的类要重写父类中的所有抽象方法,如果不重写,这个子类就必须定义为抽象类;
示例
抽象类
package abstractExample;
public abstract class Animal {
public Animal(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
String name;
public abstract void catchMouse();
}
子类
package abstractExample;
public class Cat extends Animal{
public Cat(String name) {
super(name);
}
@Override //实现抽象类, 把前面的abstract去掉
public void catchMouse() {
System.out.println("catchMouse");
}
}
测试类
public class Test5 {
public static void main(String[] args) {
Cat c = new Cat("xiaohei");
System.out.println("name is "+ c.getName());
c.catchMouse();
}
}
运行结果
name is xiaohei
catchMouse