>From Section 8.1.4 of the Java Language Specification:

"It is permitted for a single method declaration in a class to implement
methods of more than one superinterface. For example, in the code:


interface Fish { int getNumberOfScales(); }
interface Piano { int getNumberOfScales(); }


class Tuna implements Fish, Piano {
        // You can tune a piano, but can you tuna fish?
        int getNumberOfScales() { return 91; }
}

the method getNumberOfScales in class Tuna has a name, signature, and
return type that matches the method declared in interface Fish and also
matches the method declared in interface Piano; it is considered to
implement both."



-----Original Message-----
From: H Shankaranarayanan [mailto:[EMAIL PROTECTED]] 
Sent: Monday, May 27, 2002 12:00 AM
To: JDJList
Subject: [jdjlist] Re: Same Method, Multiple Interfaces

All this is fine but cud anyone let the group know
how the JVM decides which interface method to implement.
Cos both cannot be implemented here. If yes then a name clash
arises. So hows this resolved by the JVM?

--Shankar

-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]
Sent: Saturday, May 25, 2002 6:41 PM
To: JDJList
Subject: [jdjlist] Re: Same Method, Multiple Interfaces


dear tomm, if you had read my posting you could've
spared yourself the work ;o)
greets

> It doesn't, afaik, matter to Java.  But it shows a shortcoming in your

> OO design.  Your ambiguity comes because you have two "things", a car 
> and a boat, that are conceptually related but you don't relate them in

> the design.  A better design (though still not necessarily the best) 
> would be to have a base interface, say Vehicle, that has the drive 
> method and the two sub interfaces, Car and Boat, both of which extend 
> it.  Then you could create an amphibious car without trying to make it

> into a boat.
> 
> As a general rule, whenever you find yourself with two or more classes

> or interfaces that have an area of commonality, or "overlap", place
the 
> common features into a super class or interface, whichever is 
> appropriate, and remove them from the separate classes or interfaces. 
>  This will solve most, if not all, problems with ambiguity.
> 
> public interface Vehicle {
>     // Define actions/characteristics common to all vehicles
>     public void drive();
> }
> public interface Car extends Vehicle {
>     // Define actions/characteristics unique to cars
> }
> public interface Boat extends Vehicle {
>     // Define actions/characteristics unique to boats
> }
> public class Amphibious implements Car {
>     public void Drive() {
>         ...
>     }
> }
> 
> 
> Tomm
> 
> 
> 
> To change your membership options, refer to:
> http://www.sys-con.com/java/list.cfm
> 

-- 
GMX - Die Kommunikationsplattform im Internet.
http://www.gmx.net


To change your membership options, refer to:
http://www.sys-con.com/java/list.cfm


To change your membership options, refer to:
http://www.sys-con.com/java/list.cfm


To change your membership options, refer to:
http://www.sys-con.com/java/list.cfm

Reply via email to