欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

4,多态和接口

程序员文章站 2022-06-13 21:15:55
...

接口的概念来自于现实生活中,大家众所周知的接口,如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,使用接口特性,重构动物园模拟系统,使其有可扩展特性。