0
classe animal has makesound function i.e grr..... nd classes cat and dog also have makesound function i.e meow nd woof respectively... due to inheritance classes cat and dog also have makesound function of animal class ie grr.... now my q is how compiler will know which function to execute is nt ds ambiguous??... two choices r dere.... 1 make sound function of animal class ie grr 2 make sound function of own like woof or meow.... any help would be really helpful....
6 Answers
+ 2
ya... i have also heard of ds...ds is correct.... but why r we or how can we using animal object to point to cat and dog....like below
animal a=new cat();
animal b=new dog();
how ds helping us to achieve polymorphism... nd can we use parent class object to point to child class object.... how is ds possible.... @James
+ 1
It is only ambiguous in multiple inheritance, which is basically not possible in Java unless using interfaces. If a child class has the exact same method name as it's parent class, but different body of course, the child class has overridden its parent classes method. The compiler is designed to check for this. If a method is overridden, that method will be called. If you wanted a child class to call it's parent class method, you can use the super(); keyword in the first line of the child class method.
0
Through casting..see below
Ex:
class Car {
public String getCompany(){
return null;
}
}
class Corola extends Car {
public String getCompany(){
return "Toyota";
}
}
class City extends Car {
public String getCompany(){
return "Honda";
}
}
class Test {
public static void main (String[] args){
Car c1 = new Corola ();
Car c2 = new City ();
show (c1); //Toyota
show (c2); //Honda
}
// show method accepts all classes that extend Car
public static void show (Car car){
System.out.println (car.getCompany ());
}
}
0
not ryt....actually how casting can resolve ambiguity....ds is d same program as in example animal cat dog... difference is only you use extra show function... nd ur passing c1 object of tyoe car to show function... i know output is coming but how compiler resolves dat ambiguity is d question.... @Tiger
0
Here, instead of writing it out, read everything in this link. It explains it very thoroughly. And btw, those aren't animal objects, theyre cat and dog objects referencing the animal class.
http://www.cs.utexas.edu/~cannata/cs345/Class%20Notes/14%20Java%20Upcasting%20Downcasting.htm
0
It's simply called method overriding