package pkg;
//base
class Furniture{
void sayHello() {
System.out.println("Furniture: hello!");
}
}
//extends 1
class Chair extends Furniture{
void sayHello() {
System.out.println("Chair: hello!");
}
}
//extends 2
class Desk extends Furniture{
void sayHello() {
System.out.println("Desk: hello!");
}
}
// main
public class p155 {
static void furSayHello(Furniture fur) {//can have a different name
fur.sayHello();
}
public static void main(String[] args) {
Furniture[] arrFur= {new Furniture(),new Chair(),new Desk()};
for(Furniture temp:arrFur)
furSayHello(temp);
}
}
OUTPUT:
Furniture: hello!
Chair: hello!
Desk: hello!
总结:在static函数furSayHello中把基类Furniture作为输入参数,而extends类中,可以有新的方法来覆盖基类方法,从而实现仅仅改变extend类中的方法,而不必改动使用它的furSayHello部分。