1.我们一般是用子类来创建对象,那么我们希不希望拿父类来创建对象?不希望,因为父类的范围太大,不够具体
父类是一个基类、超(super)类,是别的类所继承的,但如果正常定义类,不可避免的可以被用来创建实例
2.abstract:如何禁止被拿去创建实例?
abstract 开头的是抽象类:和别的类区别不大,只是不能用来创建对象,是专门用来被继承的类
//如果new Animal()是会报错的
3.抽象方法:抽象类可以添加抽象方法
e.g. Animal里面的sayHello()方法一般没有用,因为animal类是拿来继承的,sayHello实际上就是动物叫,而不同的动物叫声不一样,所以sayHello()相当于一个通用叫声的方法,不能满足每个子类的需求,而且有时候还会在子类当中忘记重写,这时候就会默认用到默认方法(动物叫)
所以这时候希望这个方法不在类中定义具体实现,把结构定义出来就行,具体实现让子类来编写
因此在方法名字前面添加 abstract,没有方法体,只能定义在抽象类中,子类必须对抽象方法重写
如果新定义一个子类,里面啥都没有就会报错,提醒你给父类中的抽象方法进行重写
