为什么需要抽象类
动物Animal都有自已的行为,小鸟和老虎继承了动物的行为
但小鸟和老虎的行动方式不一样
在动物类中能给出行动的具体实现吗?
什么是抽象类
使用abstract关键字修饰的方法叫做抽象方法,抽象方法没有方法体
当一个类中包含了抽象方法,那么该类也必须使用abstract关键字来修饰
这种使用abstract关键字修饰的类就是抽象类
抽象类及抽象方法定义的语法格式
[修饰符]abstract class类名{
//定义抽象方法
[修饰符] abstract方法返回值类型 方法名([参数列表])
//其他方法或属性
}
public abstract class Animal{//拥有抽象方法的类,必须是抽象类
//属性
public String name;
Animal(){
this.name = "小花虎";
}//抽象类可以拥有构造方法,但是不能通过new + 构造的方式创建对象,没有实际意义,主要是完成对抽象类本身的一些初始化工作
//方法,行为
public abstract void move();
}
public class Bird extends Animal{//鸟是动物
@Override //重写父类的方法
public void move(){
System.out.println("小鸟在天上飞");
}
}
public class Tiger extends Animal{
@Override //重写父类的方法
public void move(){
System.out.println("老虎在地上跑");
}
}
public class Test {
public static void main(String[] args){
// Animal a = new Animal();//不能实例化这种类型,因为他是抽象的,无法给你具体的
Animal a1 = new Bird();//a1是Bird对象的上转型对象
Animal a2 = new Tiger();
a1.move();
a2.move();
}
}
抽象类可以拥有构造方法,但是不能通过**new + 构造**
的方式创建对象,没有实际意义,主要是完成对抽象类本身的一些初始化工作