我们既可以通过继承(entends)父类也可以通过实现(implements)接口(interface)来实现一个或者多个原有的方法。例如:
继承方法如下:
父类如下:
1 //父类 2 class father { 3 4 public void print(){ 5 System.out.println("这是一个类!"); 6 } 7 8 }
子类如下:
1 public class Client extends father{ 2 3 public static void main(String[] args) { 4 5 Client s1=new Client(); 6 s1.print(); 7 System.out.println("从父类继承而来的!"); 8 } 9 }
生成的结果如下:
父类father拥有方法print(),子类Cient继承了父类father,并new了一个对象s1,使用子类对象s1访问了父类的方法print() 。
实现的方法如下:
借口:
public interface inter { public void print(); }
子类s1:
public class s1 implements inter{ public void print() { System.out.println("s1使用了接口的方法print"); } }
子类s2:
public class s2 implements inter{ public void print() { System.out.println("s2使用了接口的方法print"); } }
客户端实现两个子类的方法:
public class Client{ public static void main(String[] args) { s1 s1=new s1(); s1.print(); s2 s2=new s2(); s2.print(); } }
结果如下:
刚开始有的时候想到在接口中就算不继承也照样可以使用print()方法,为什么要多此一举呢?然后就上网找,达到的回答经过我的理解后大概就是使用接口的时候可以固定子类的行为!并且我们还可以通过接口告诉人们实现了什么功能,也实现了模块和模块之间的解耦。
如果我们使用了继承,继承后我们不一定要使用从父类那里继承的方法,但是我们要使用的时候可以直接调用,很方便。这就相当于我们从父辈那里继承了一套房子,你可以住也可以只是放着,但我们要住的时候就可以直接住,不用去住房子住,这样就更加便利了。
而我们使用接口时,我们就必须实现接口中所定义的所有方法,否则就会报错,这就相当于我们规定了一部笔记本电脑必须要有键盘、屏幕、电池等部分一样,键盘、屏幕、电池就相当于接口中的方法,规定了我们一定要有这些,抽象的定义了笔记本这样物品。