upcast Example:
Public classtest{ Public Static voidMain (string[] args) {Cup Acup=NewBrokencup (); Acup.addwater (10);//Method Binding }}classCup { Public voidAddwater (intW) { This. Water = This. Water +W; } Public voidDrinkwater (intW) { This. Water = This. Water-W; } Private intWater = 0;}classBrokencupextendscup{ Public voidAddwater (intW) {System.out.println ("Shit, broken Cup"); } Public voidDrinkwater (intW) {System.out.println ("Om...num ..., no water inside"); }}
Downcast Example:
Public classtestjavademo{ Public Static voidMain (string[] args) {person P=NewStudent (); Student s=(Student) p; S.fun1 (); S.fun2 (); }}classperson{ Public voidfun1 () {System.out.println ("1.person{fun1 ()}"); } Public voidfun2 () {System.out.println ("2.person{fun2 ()}"); }}classStudentextendsperson{ Public voidfun1 () {System.out.println ("3.student{fun1 ()}"); } Public voidFun3 () {System.out.println ("4.student{fun3 ()}"); }}
Java polymorphism: Upcast and downcast