抽象类
概述
抽象类 和具体类是相对的概念。“抽象”是一种存在思想逻辑中的概念,而“具体”是一种可见可触摸的现实对象。如:动物比猫咪更抽象一点,而生物比动物更抽象。
在Java中一个没有方法体的方法应该定义为抽象方法,
public abstract class Animal{
public abstract void eat();
}
而类中如果有抽象方法,则必须定义为抽象类
抽象类的特点
- 抽象类和抽象方法 必须用 关键词abstract修饰
- 抽象类中 不一定 有抽象方法,但是有抽象方法的类 一定 是抽象类。
- 抽象类 不能进行实例化 。
- 普通类和抽象类都可以被继承,但是抽象类被继承后子类必须重写继承的方法,除非自类也是抽象类。
Q:为什么要重写抽象类中的所有抽象方法?
A:猫咪和兔子都是动物类的一个子类,是他的一个具体类。
比如动物都有eat()这个方法。但是猫吃鱼,兔子吃草。所以每个动物关于具体吃的方式是需要在子类中重写的,不然的话,猫和兔子不就一样了吗
多态 抽象类 接口
接口
概念
接口是对动作的抽象,抽象类是对 本质 的抽象。
抽象类表示的是,这个对象是什么。接口表示的是,这个对象能做什么。比如,男人和女人,他们的抽象类是人类,而猫和狗的抽象类是宠物类。人类可以吃东西,宠物类也可以吃东西,但是两者不能混为一谈,因为有本质的区别。这个“吃东西”是一个动作,你可以把“吃东西”定义成一个接口,然后让两个类去实现它的方法。
所以,在高级语言上,一个类只能继承一个类或抽象类,正如人不可能同时是动物类又是植物类,但是可以实现多个接口,例如,吃饭接口、呼吸接口等。