正在加载图片...
4.3.1多态与动态绑定 1.派生类的对象具有多个类型m TropicalFruit("香蕉",1000) = new Berry("葡萄",2000)冫 fruits[2]= new TropicalFruit("菠萝",2000); 2.动态绑定实现多态 fruits[3]= new Berry("草莓",1000) fruits[4]= new Citrus Fruit(“橘子",1000); 我们可以像对待基类对象那样对待派住类对象,它们的共 性表现在继承下来的同名类成员所有继承于共同基类的 派生类对象可以当做是这些基类的对象。 数组属性索引 Food myFooqi派生类类型 TropicalFruit Tropical Fruit CitrusFruit Fruit my Fruit;水果名称 香蕉 葡萄 菠萝 草莓 橘子 orange= nel CitrusFruit(橘1000/包建橘子厨象 my Food = orange(;相当 damy Food=(Fc oodorange my Food. eat()用的是 Citrusfruit的过法去剥皮吃橘子 myFruit= orange;/相当于 my Fruit卡(Frut) borange L K& SAmira myFu:eat调用的还是 CitrusFruit的eat方法:剩皮吃感m 投入”+ input return gJava程序设计大学教程 4.3.1 多态与动态绑定 1. 派生类的对象具有多个类型 2. 动态绑定实现多态 public int gain() { int g=input*2;//收益是投入的两倍 return g; } public int gain() { //收益不变 ... } public int gain() { //收益-200 ... } public int gain() { // 收益是投入的3倍 int g = input * 3; System.out.println(fruitName + "投入" + input + " 净收益" + g); return g; } 覆盖(override) fruits[i].gain(); 程序运行时动 态确定实现的 gain方法 数组属性索引 0 1 2 3 4 派生类类型 TropicalFruit Berry TropicalFruit Berry CitrusFruit 水果名称 香蕉 葡萄 菠萝 草莓 橘子 fruits[0] = new TropicalFruit("香蕉", 1000); fruits[1] = new Berry("葡萄", 2000); fruits[2] = new TropicalFruit("菠萝", 2000); fruits[3] = new Berry("草莓", 1000); fruits[4] = new CitrusFruit("橘子", 1000); 我们可以像对待基类对象那样对待派生类对象,它们的共 性表现在继承下来的同名类成员。所有继承于共同基类的 派生类对象可以当做是这些基类的对象。 Food myFood; Fruit myFruit; CitrusFruit orange; orange = new CitrusFruit("橘子",1000); //创建橘子对象 myFood = orange(); //相当于myFood = (Food)orange; myFood.eat(); //调用的是CitrusFruit的eat方法:剥皮吃橘子 myFruit = orange; //相当于myFruit = (Fruit)orange; myFruit.eat(); //调用的还是CitrusFruit的eat方法:剥皮吃橘子
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有