我们假设有这么一个年轻人(子类),如果他有一个有钱的老爸(超类),那么因为他可以直接从父亲(超类)获得这一部分财产:房子,车和钱(继承的方法),甚至于他可以不用工作,游手好闲(可以“拥有”超类提供的方法)。当然了,如果他还算是个有上进心的年轻人的话, 他也可以在已有基础上,自己打拼挣一些钱(属于子类自身的方法,或者覆盖超类原有的方法)
接口实现
但如果这个年轻人(类)生于一个相对普通的家庭,而且还有一个望子成龙的母亲(接口)的话,那么在他妈的严格要求下,他就必须靠自己的努力工作,去取得房子,车和钱(实现接口中约定的方法),并且他妈可能会要求他: 达不到目标就不要回来了! (如果没有实现接口约定的全部方法会报错)
代码如下:
超类继承
SuperClass.java:
public class SuperClass { public String getMoney () {// 获取金钱 ; } public String getHouse () { // 获取房子 ; } public String getCar () { // 获取车子 ; } }
Myclass.java:
public class Myclass extends SuperClass{ public String getAll () { + getCar() + + getHouse(); } main(String args []) { Myclass me = new Myclass(); System.out.println(me.getAll()); } }
运行结果:
Money car house
接口实现:
myInterface.java:
public interface myInterface { public String getMoney (); public String getHouse (); public String getCar (); }
Myclass.java:
public class Myclass implements myInterface{ public String getMoney () { ; } public String getHouse () { ; } public String getCar () { ; } public String getAll () { + getCar() + + getHouse(); } main(String args []) { Myclass me = new Myclass(); System.out.println(me.getAll()); } }
运行结果:
Money car house
接口和抽象类的差异
接口和抽象类在使用形式上非常相似
展示一下抽象类的使用
AbstractClass.java:
abstract class AbstractClass { function (); }
MyClass.java:
public class MyClass extends AbstractClass { public int function() { return 0; } }
【吐槽】我去!这看起来不和接口一模一样吗?!
接口和抽象类的共同点1.都是java中抽象的一种方式
2.都不能实例化
3.都要求类(或子类)