面向对象的多态
//父类可以引用子类对象。
//父类引用只能调用子类继承父类的方法,父类引用不能调用子类独有的方法。
People newPeople = new Man("Bilu");//如在“人类”类中引用一个 “男人”实例
//子类引用不能直接赋值父类对象,除非将父类对象进行强制转换
//编译ok,运行异常
Man newMan = (Man)new People("neddy");//但在“男人”类中不全是“人类”类 “人类”类中还有“女人”类
对于 People newPeople =new Man ("");
People newPeople = new People("");他俩的比较是 你不能说男人他不是人,只不过定义变量时使用的接口不同而已。
例子:
接口IA里有方法: fa()
接口IB里有方法: fb()
子类C实现(继承)了接口IA,IB,并且子类自己定义了个方法fc(),则子类C就有:fa(),fb(),fc()三个方法
当子类C的实例objC被IA类型的引用指向的时候[IA objC = new C()或者(IA)objC],你可以调用到的是fa(),“通俗”的说objC这里是IA类型的(实际上是C类型),而并不是C类型的,所以只能调IA的fa()
当子类C的实例objC被IB类型的引用指向的时候[IB objC = new C()或者(IB)objC],你可以调用到的是fb(),“通俗”的说objC这里是IA类型的,而并不是(其实是)C类型的,所以只能调IB的fb()
当子类C的实例objC被C类型的引用指向的时候[C objC = new C()或者(C)objC],你可以调用到的是fa(),fb(),fc()
详细学习底层的东西。
//父类可以引用子类对象。
//父类引用只能调用子类继承父类的方法,父类引用不能调用子类独有的方法。
People newPeople = new Man("Bilu");//如在“人类”类中引用一个 “男人”实例
//子类引用不能直接赋值父类对象,除非将父类对象进行强制转换
//编译ok,运行异常
Man newMan = (Man)new People("neddy");//但在“男人”类中不全是“人类”类 “人类”类中还有“女人”类
对于 People newPeople =new Man ("");
People newPeople = new People("");他俩的比较是 你不能说男人他不是人,只不过定义变量时使用的接口不同而已。
例子:
接口IA里有方法: fa()
接口IB里有方法: fb()
子类C实现(继承)了接口IA,IB,并且子类自己定义了个方法fc(),则子类C就有:fa(),fb(),fc()三个方法
当子类C的实例objC被IA类型的引用指向的时候[IA objC = new C()或者(IA)objC],你可以调用到的是fa(),“通俗”的说objC这里是IA类型的(实际上是C类型),而并不是C类型的,所以只能调IA的fa()
当子类C的实例objC被IB类型的引用指向的时候[IB objC = new C()或者(IB)objC],你可以调用到的是fb(),“通俗”的说objC这里是IA类型的,而并不是(其实是)C类型的,所以只能调IB的fb()
当子类C的实例objC被C类型的引用指向的时候[C objC = new C()或者(C)objC],你可以调用到的是fa(),fb(),fc()
详细学习底层的东西。