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,使用接口特性,重构动物园模拟系统,使其有可扩展特性。
上一篇: Java—接口和多态