为什么需要抽象类
动物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 + 构造**的方式创建对象,没有实际意义,主要是完成对抽象类本身的一些初始化工作
