1 / 11

METHOD OVERRIDING

METHOD OVERRIDING. Sub class can override the methods defined by the super class. Overridden Methods in the sub classes should have same name, same signature , same return type and may have either the same or higher scope than super class method.

levi
Download Presentation

METHOD OVERRIDING

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. METHOD OVERRIDING • Sub class can override the methods defined by the super class. • Overridden Methods in the sub classes should have same name, same signature , same return type and may have either the same or higher scope than super class method. • Java implements Run Time Polymorphism/ Dynamic Method Dispatch by Method Overriding. [Late Binding] • Call to Overridden Methods is Resolved at Run Time. • Call to a overridden method is not decided by the type of reference variable Rather by the type of the object where reference variable is pointing. • While Overriding a Method, the sub class should assign either same or higher access level than super class method.

  2. EXAMPLE METHOD OVERRIDING class A { void show() { System.out.println("Hello This is show() in A"); }// End of show() Method } // End of class A class B extends A { void show() { System.out.println("Hello This is show() in B"); }// End of show() Method } // End of class B B class overrides show() method from super class A class override { public static void main(String args[]) { // super class reference variable // can point to sub class object A a1 = new A(); a1.show(); a1 = new B(); a1.show(); } } Call to show() of A class Call to show() of B class

  3. Is this Method Overriding class A { void show(int a) { System.out.println("Hello This is show() in A"); } } class B extends A { void show() { System.out.println("Hello This is show() in B"); } } class override1 { public static void main(String args[]) { /* A a1 = new B(); a1.show(); */ A a1 = new A(); a1.show(10); B b1 = new B(); b1.show(10); b1.show(); } NO OUTPUT Hello This is show() in A Hello This is show() in A Hello This is show() in B

  4. Dynamic Method Dispatch • Super class reference variable can refer to a sub class object. • Super class variable if refers to sub class object can call only overridden methods. • Call to an overridden method is decided by the type of object referred to. A A a1 = new B(); a1.show(); // call to show() of B a1 = new C(); a1.show(); // call to show() of C a1 = new D(); a1.show(); // call to show() of D B C D Assume show() Method is Overridden by sub classes

  5. class A{void show(){System.out.println("Hello This is show() in A");}}class B extends A{void show(){System.out.println("Hello This is show() in B");}} DYNAMIC METHOD DISPATCH class C extends A{void show(){System.out.println("Hello This is show() in C");}}class D extends A{void show(){System.out.println("Hello This is show() in D");}} CONTINUED…..

  6. class override2 { public static void main(String args[]) { A a1 = new A(); a1.show(); a1 = new B(); a1.show(); a1 = new C(); a1.show(); a1 = new D(); a1.show(); } } Hello This is show() in A Hello This is show() in B Hello This is show() in C Hello This is show() in D

  7. class override3 { public static void main(String args[]) { A a1 = new B(); B b1 = (B) a1; /* A a1 = new B(); C c1 = (C) a1; Exception in thread "main" java.lang.ClassCastException: B at override3.main(override3.java:39) */ } }

  8. Examples Overriding A a1 = new B(); a1.show() ; // Valid // a1.show(10); // Invalid //a1.print(); // Invalid class A { void show() { …. } } class B extends A { void show() { …. } void show(int x) { … } void print() { … } } When a super class variable points to a sub class object, then it can only call overridden methods of the sub class.

  9. class A { protected void show() { System.out.println("Hi"); } } class B extends A { void show() { System.out.println("Hi"); } } D:\Java1>javac AB.java AB.java:10: show() in B cannot override show() in A; attempting to assign weaker access privileges; was protected void show() ^ 1 error

  10. IS THIS METHOD OVERRIDING class A { private void show() { System.out.println("Hi"); } } class B extends A { int show() { System.out.println("Hi"); return 10; } }``1A?.,MNB NO CODE WILL COMPILE & RUN SUCESSFULLY

  11. What’s Wrong Here00 class A { static int show() { System.out.println("class A"); return 0; } } class B extends A { void show() { System.out.println("class B"); } } sample.java:12: show() in B cannot override show() in A; overridden method is st atic void show() ^ 1 error

More Related