extends和implements用法:
- 在一个类去继承另一个类时,用extends;
- 在一个接口继承另一个接口时,用extends;
- 在一个类继承一个接口时,用implements;
- 在一个类同时继承另一个类和实现一个接口时,先用extends再用implements。
java 接口 和 抽象类 的区别
抽象类可以提供某些方法的部分实现,但是接口必须全部重写方法。例如:向一个抽象类里加入一个新的具体方法时,那么它所有的子类都同时得到了这个新的方法。如果向一个接口里加入一个新的方法,所有实现这个接口的类就都无法成功通过编译了,因为必须让每一个类都再实现(重写)这个方法才行。但是抽象类只能单继承,而接口则可以实现多继承。
abstract修饰类
如果说一个类是被abstract修饰的,那么该类即为抽象类。抽象类不能创建对象,必须被继承使用。抽象类可以最大限度的抽取出子类的共性部分,将其放在父类(abstract)中。
注意:
- final和abstract不可同时出现。
- 当abstract用于修饰方法时(抽象方法),此时方法不需要实现,子类重写该方法之后方法才能够生效。由此可知:Abstract和static不能放在一起,否则便会出现错误。(这是因为static不可被覆盖,而abstract为了生效必须被覆盖。)
private void print(){};此语句表示方法的空实现。
Abstract void print(); 此语句表示方法的抽象,无实现。
抽象类和抽象方法的关系
一个类中只要有抽象方法,那么这个类就是抽象类;一个抽象类中不一定全是抽象方法。由此可知:如果让一个非抽象类继承一个含抽象方法的抽象类,此时就会报错。因为当一个非抽象类继承一个抽象方法的时候,本着当一个类中有抽象方法时,那么这个类必须为抽象类的原则。这个类必须为抽象类,这与此类为非抽象冲突,所以报错。