This week's book giveaways are in the Refactoring and Agile forums.
We're giving away four copies each of Re-engineering Legacy Software and Docker in Action and have the authors on-line!
See this thread and this one for details.
Win a copy of Re-engineering Legacy Software this week in the Refactoring forum
or Docker in Action in the Agile forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Problem with return type in an overriden method

 
Xavier Figueroa
Greenhorn
Posts: 6
Java Netbeans IDE Spring
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Given this code:


if i run this code i get

Why I need to cast (String)a.voice() if the method called is a Dog Class member and has a String return type?
if i put the cast, y get
bark
 
Martin Vajsar
Sheriff
Pie
Posts: 3751
62
Chrome Netbeans IDE Oracle
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
You've declared the variable as Animal, and Animal.voice() returns Object. Although you know that the variable a contains an instance of Dog, the compiler does not "know" it and therefore expects that a.voice() returns Object.

This behavior of the compiler is not an error, it was designed this way. This is a trivial case. However, there might be cases in which such conclusions about actual type of a variable (if at all possible) might require extensive analysis. Therefore, the compiler follows a simple rule: a type of the variable is always determined by its declared type, regardless of its actual contents.
 
Martin Vajsar
Sheriff
Pie
Posts: 3751
62
Chrome Netbeans IDE Oracle
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
... and welcome to the Ranch!
 
Xavier Figueroa
Greenhorn
Posts: 6
Java Netbeans IDE Spring
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Thank you so much for your answer, I really needed this clarification and thanks for your Welcome
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic