在学习完继承和多态后,了解到使用继承的一个好处。看下面的例子:
public class British extends People {
public British(String name) {
super(name);
}
}
public class People {
public String name;
public People(String name){
this.name = name;
}
}
public class American extends People {
public American(String name) {
super(name);
}
}
public class Italian extends People {
public Italian(String name) {
super(name);
}
}
public class Language {
public void say(People people){
System.out.println(people.name + " say language");
}
// public void ameSay(American a){
// System.out.println(a.name + " say language");
// }
// public void briSay(British b){
// System.out.println(b.name + " say language");
// }
// public void itaSay(Italian i){
// System.out.println(i.name + " say language");
// }
}
public class Test {
public static void main(String[] args) {
Language l = new Language();
American a = new American("ami");
British b = new British("brn");
Italian i = new Italian("itn");
l.say(a);
l.say(b);
l.say(i);
// l.ameSay(a);
// l.briSay(b);
// l.itaSay(i);
}
}
运行结果如下:
ami say language
brn say language
itn say language
ami say language
brn say language
itn say language
从以上代码可以看出:在多态的情况下,我们只需要写一个方法say(People people),对象会自动向上转型,如果单独传递一个具体的类型作为参数,那我们就要在Language类中为每一个具体类型写一个say()方法了,如上面的注释。如有需要还要再增加其它类型的方法。