理解多态和RTTI

来源:互联网 发布:淘宝官方电话人工服务 编辑:程序博客网 时间:2024/09/21 08:19
public class ChinesePerson implements Person {@Overridepublic void say() {// TODO Auto-generated method stubSystem.out.println("i am chinese");}}
public class JapanPerson implements Person {@Overridepublic void say() {// TODO Auto-generated method stubSystem.out.println("i am Japan");}}

public interface Person {public void say();public default void type() {System.out.println("i am a interface");}}

//理解多态public class TestMain {public static void main(String[] args) {//存入数组的时候,会自动向上转型为Object,丢失了具体的类型//当从数组中取出的时候,(List容器将所有的事物都当做Object持有)//会自动将结果转型回Person,这就是RTTI的基本用法List<Person> persons = Arrays.asList(new ChinesePerson(),new JapanPerson());for(Person person:persons) {//这里的person类型是Person而不是Chinese或者是Japan,但是程序会自动执行原有类型的方法上//能够通过Person对象执行到子类的具体代码就是又多态来决定的//而多态也是使用RTTI,可以查询某个Person引用所指向的对象的确切类型,然后选择性的执行子类的方法person.say();}}}

多态的实现是依靠rtti(运行时类型检查或者叫后期绑定)
原创粉丝点击