抽象类
抽象类是表示类型的,对一类事物的抽象,更关注事物的属性(也有方法)
比如说AClass继承了BaseClass,那么就可以说AClass就是一个BaseClass。
声明的是父类 new的是子类,
1,类型是一个子类类型, 抽象类里面不一定有抽象方法。但是拥有抽象方法的类一定是抽象类,(抽象类中可以有普通方法)。抽象方法不能是私有的(私有的没有任何意义)。
2,声明的时候决定调用的是哪个类型的方法和属性 (普通方法和属性 属性也是方法)(普通方法和属性,子类在重写父类时 自动加new,会有警告但是不影响)
3,对于接口 虚方法 抽象方法 (声明的是父类 new的是子类) 则是调用子类的方法,因为override。
总结:普通方法的调用由编译时决定 虚方法和抽象方法由运行时决定
接口
接口描述可以做什么,对行为的扩展,更关注事物可以做什么,并且接口实现了功能和属性的分离
抽象类,是一种事物的抽象,更关注事物的属性(也有方法)。接口更关注的是功能。
接口实现了功能和属性的分离。
接口和抽象类的本质区别,就是抽象类的表示继承它的类,是某一类东西。
接口表示它有某一个行为。