4,多态和接口

来源:互联网 发布:php 今日凌晨时间戳 编辑:程序博客网 时间:2024/06/05 14:20

接口的概念来自于现实生活中,大家众所周知的接口,如USB接口。

接口带来什么样的好处呢?扩展性

如果你的电脑有USB接口,那么,只要有USB插头的设备,如鼠标,键盘,打印机,移动硬盘等等,就可以接到你的电脑上,增加你的电脑功能,扩展你的电脑能力。


在Java中,有多态的特性,我们可以利用它来增加程序的扩展性。

多态的概念,简单说,就是子类的引用可以赋值给父类的引用。如下面代码:

Father f = new Son();
当我们调用父类的方法时,实际上调用的是子类的方法。而由于不同子类重写父类的方法可能不同,导致实际执行的效果的不同,呈现多种形态,简称多态。

public class Test(){  public static void main(String[] args){    Father f = new ChineseSon();    f.sayHello();    f = new EnglishSon();    f.sayHello();  }}class Father{  protected void sayHello(){}}class ChineseSon extends Father{  public void sayHello(){    System.out.println("你好");  }}class EnglishSon extends Father{  public void sayHello(){    System.out.println("Hello");  }}
输出结果:

你好

Hello


abstract关键字

在声明类时,可在类名前添加abstract关键字。表示该类中,有方法未被实现,是abstract方法该类不能直接实例化对象。

继承该类的子类,必须重写父类中未实现的抽象方法。

abstract class Father{  protected abstract void sayHello();}class Son extends Father{  public void sayHello(){    System.out.println("Hello");  }}

Interface接口

接口是专门为扩展设计的。接口类的所有方法,都是抽象方法

Java中,一个类只能继承一个父类,但可实现多个接口。

interface Speak{  public void sayHello();  public void sayGoodbye();}class Son implements Speak{  public void sayHello(){    System.out.println("Hello");  }  public void sayGoodbye(){    System.out.println("Good bye");  }}

这样,在主程序中我们调用的是父类,或接口的方法。

当我们需要改变某些行为,只需要在赋值给父类引用时,赋不同的子类,或实现类,就可实现功能的扩展和变化,而不用改变主程序。


本节问题:

1,使用接口特性,重构动物园模拟系统,使其有可扩展特性。

0 0
原创粉丝点击