继承和实现的区别:
1. 类继承类,实现接口。接口继承接口。
2. 类只能单继承类(抽象类和非抽象类), 可以多实现接口。而接口可以多继承接口。
Java为什么只能单继承
Java中类不能多继承类是为了安全。因为无论是抽象类还是非抽象类都包含非抽象的方法(非抽象类也可能没有),当类可以多继承类时,被继承的不同的父类可能会有同名同参的方法,如果子类也没有重写这个同名同参的方法,则在子类的实例调用这个方法的时候就会出现冲突。
举个例子:
class Animal 继承了class Cat 和class Dog , 但是 class Cat 和class Dog 中有同名同参的方法sleep,且在Animal 中并没有重写方法sleep,那在Animal 的实例中调用sleep方法就会出现冲突,jvm就会不知道到底该调用哪一个方法。
class Cat { sleep(){}};
class Dog {sleep() {}};
class Animal extends Cat , Dog {};
Animal a = new Animal ();
a.sleep();
此时在执行a.sleep()时冲突就会出现。
抽象类和接口的区别:
如果一个抽象类中都是抽象方法,那么它跟接口又有什么用的区别?
(1)抽象类只能被单继承,接口可以被多实现
(2)接口只有定义(相对来说),抽象类可以有定义和实现