Java基础之抽象类abstract
一、抽象类的定义
抽象类是为子类提供一个规范。
修饰符 abstract 类名{ //类体 修饰符 abstract 返回值类型 方法名(参数列表) }
抽象方法没有方法体:public abstract void test();
普通方法有方法体:public abstract void test(){//方法体代码};
1、定义一个类,如果这个类是抽象类,那么这个类中至少有一个抽象方法。
2、在抽象类中的方法不一定是抽象方法,但是有抽象方法的类一定是抽象类
二、抽象类的使用
@override用来检测是否重写成功。
1、一个类继承类抽象类,就必须要重写该抽象类的所有抽象方法。
2、如果一个类没有重写抽象类的抽象方法,那么这个类也要定义为抽象类
三、代码演示
public class Animal { }
public abstract class Feline { private int legCount=4;//定义腿的数量 private String headShape="round";//定义脑袋的形状 private boolean meatEater=true;//定义是否为食肉动物 public int getLegCount() { return legCount; } public void setLegCount(int legCount) { this.legCount = legCount; } public String getHeadShape() { return headShape; } public void setHeadShape(String headShape) { this.headShape = headShape; } public boolean isMeatEater() { return meatEater; } public void setMeatEater(boolean meatEater) { this.meatEater = meatEater; } //叫 public void cry() { System.out.println("动物在狂叫"); } //捕食 public abstract void catchAnimal(Animal animal); }
public class Mouse extends Animal{ }
public class Cat extends Feline{ @Override public void catchAnimal(Animal animal) { // TODO Auto-generated method stub if(animal instanceof Mouse) { System.out.println(""); }else { System.out.println("猫不能捕食他"); } } }
public class Tiger extends Feline{ @Override public void catchAnimal(Animal animal) { // TODO Auto-generated method stub System.out.println("老虎在捕食"); } }