对象转型

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

对象转型对象转型分类向上转型向下转型主要内容定义:将子类的对象赋值给父类的引用考虑一个引用能够调用哪些成员(变量和函数)取决于这个引用的类型。考虑一个引用调用的是哪一个方法,取决于这个引用所指向的对象。什么是向上转型定义:将父类对象赋值给子类对象要求首先有一个向上转型对象赋值给父类引用,然后在向下转型可以使用instanceof类名来判断该引用类型变量所指向的对象是否属于该类或该类的子类什么是向下转型被客户不断变化的需求“折磨”继承的应用被客户不断变化的需求“折磨”继承的应用Printer开机:open关机:close打印:print被客户不断变化的需求“折磨”客户的第二次需求客户的第三次需求对象转型实例1(1)classAnimal{publicStringname;publicAnimal(Stringname){this.name=name;}}classCatextendsAnimal{publicStringeyeColor;publicCat(Stringstr,Stringstr2){super(str);eyeColor=str2;}}classDogextendsAnimal{publicStringfurColor;publicDog(Stringname,Stringfc){super(name);furColor=fc;}}publicclassTestDataTypeChange{publicstaticvoidmain(Stringargs[]){Animala=newAnimal(name);Dogb=newDog(DogName,black);Catc=newCat(CatName,white);System.out.println(ainstanceofAnimal);System.out.println(binstanceofAnimal);System.out.println(cinstanceofAnimal);System.out.println(ainstanceofCat);a=newDog(BigYellow,yellow);System.out.println(a.name);//System.out.println(a.furColor);//System.out.println(a.eyeColor);System.out.println(ainstanceofAnimal);System.out.println(ainstanceofDog);Dogd=(Dog)a;System.out.println(d.furColor);}}对象转型2publicclassTest{publicstaticvoidmain(Stringargs[]){Testtest=newTest();Animala=newAnimal(name);Catc=newCat(Catname,blue);Dogd=newDog(DogName,black);test.f(a);testf(c);testf(d);}publicvoidf(Animalobj){System.out.println(name:+obj.name);if(objinstanceofCat){System.out.println(eyeColor:+obj.eyeColor);elseif(objinstanceofDog){System.out.println(furColor:+obj.furColor);}}}}动态绑定和多态动态绑定是指执行期间(非编译期间)判断所引用的实际对象类型,根据实际的类型调用其相应的方法例题见课本P115例题TestPolymoph\Test.java多态存在的条件:1、要有继承2、要有重写3、父类引用指向子类对象抽象类用abstract关键字来修饰一个类时,这个类叫做抽象类;用abstract来修饰一个方法时,该方法叫做抽象方法。含有抽象方法的类必须声明为抽象类;抽象类必须被继承,抽象方法必须被重写抽象类不能被实例化抽象方法只需要声明,而不须实现abstractclassAnimal{privateStringname;Animal(Stringname){this.name=name;}publicabstractvoidenjoy();}classCatextendsAnimal{privateStringeyesColor;Cat(Stringn,Stringc){super(n);eyesColor=c;}publicvoidenjoy(){System.out.println(猫叫声......);}}final关键字final的变量的值不能够被改写final的成员变量final的局部变量(形参)final的方法不能被重写final的类不能够被重写TestFinal.java

1 / 15
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功