抽象方法
将共性行为(方法)抽取到父类,由于每个子类执行内容不一样,在父类不能确定具体的方法体,该方法可以定义为抽象方法。
抽象类:如果一个类中存在抽象方法,那么该 类必须声明为抽象类。
抽象方法定义格式:public abstract 返回值类型 方法名(参数列表); 不写方法体
抽象类定义格式: public abstract class 类名{}
注意事项
- 抽象类不能实例化
- 抽象类不一定有抽象方法,有抽象方法的类一定是抽象类。
- 抽象类可以有构造方法(当创建子类对象时,给属性赋值用的)
- 抽象类的子类:要么重写抽象类所有抽象方法,要么是抽象类(需要继续创建子类重写)。
案例
public abstract class Animal {private int age;private String name;public Animal() {}public Animal(int age, String name) {this.age = age;this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public abstract void eat();public void drink(){System.out.println("heshui");}
}
public class Dog extends Animal{public Dog() {}public Dog(int age, String color) {super(age, color);}@Overridepublic void eat(){System.out.println("吃骨头");}
}
public class frog extends Animal{public frog() {}public frog(int age, String name) {super(age, name);}@Overridepublic void eat() {System.out.println("吃虫子");}
}
public class sheep extends Animal{@Overridepublic void eat() {System.out.println("chicao");}
}
public class Test {public static void main(String[] args) {frog f=new frog(1,"小绿");System.out.println(f.getAge()+f.getName());f.eat();f.drink();}}