java中的继承(向上转型)

来源:互联网 发布:seo资源网 编辑:程序博客网 时间:2024/04/30 23:17

在学习完继承和多态后,了解到使用继承的一个好处。看下面的例子:

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 languagebrn say languageitn say languageami say languagebrn say languageitn say language
从以上代码可以看出:在多态的情况下,我们只需要写一个方法say(People people),对象会自动向上转型,如果单独传递一个具体的类型作为参数,那我们就要在Language类中为每一个具体类型写一个say()方法了,如上面的注释。如有需要还要再增加其它类型的方法。




2 0