1.有了类,为什么还要有抽象类?
类是对相同结构对象的抽象。一个类实例化出的对象结构都是相同的,但每个对象都是独立的个体,对象与对象之间具有相似性,但不相同。那么不同的地方在哪,在于属性值的不同,以及同名方法实现的不同。所以,结构相同的对象属于一个类。
抽象类则是对相似结构类的抽象。当我们说说动物类的时候,动物类包括了人类,猪类,鸟类。那么动物就可以看作是这些类的抽象类。如果我们说生物类时,那就是更高一个层次的类的抽象,生物类中就包括了动物类,植物类,微生物类,等等。
所以,可以看出,抽象类是对不同层次的抽象概念的再抽象。抽象类可以看作是对类的抽象。
2.抽象类中有抽象方法,为什么还要有接口?
衍生类通过继承,可以继承父类的属性和方法,抽象类中有抽象方法,衍生类需要实现抽象方法,和接口的功能是一样的。但是要知道,抽象类始终还是类,强调的是一组事物的相似性。继承抽象类的衍生类不管如何去实现所继承的抽象方法,但方法的行为总归还是属于该类的一种行为。而接口,则是规定了一组相似的行为,这个行为未必只有一种类的对象具有,例如:飞行。鸟类、昆虫类、飞机,这些明显不是一个种类的事物,但是都具有飞行的能力,所以这里就可以定义一个接口叫做飞行。