51 lines
1.1 KiB
Java
51 lines
1.1 KiB
Java
// interfaces/MICollision.java
|
|
// (c)2016 MindView LLC: see Copyright.txt
|
|
// We make no guarantees that this code is fit for any purpose.
|
|
// Visit http://mindviewinc.com/Books/OnJava/ for more book information.
|
|
import java.util.*;
|
|
|
|
interface Bob1 {
|
|
default void bob() { System.out.println("Bob1::bob"); }
|
|
}
|
|
|
|
interface Bob2 {
|
|
default void bob() { System.out.println("Bob2::bob"); }
|
|
}
|
|
|
|
// class Bob implements Bob1, Bob2 {}
|
|
/* Produces:
|
|
error: class Bob inherits unrelated defaults
|
|
for bob() from types Bob1 and Bob2
|
|
class Bob implements Bob1, Bob2 {}
|
|
^
|
|
1 error
|
|
*/
|
|
|
|
interface Sam1 {
|
|
default void sam() { System.out.println("Sam1::sam"); }
|
|
}
|
|
|
|
interface Sam2 {
|
|
default void sam(int i) { System.out.println(i * 2); }
|
|
}
|
|
|
|
// This works because the argument lists are distinct:
|
|
class Sam implements Sam1, Sam2 {}
|
|
|
|
interface Max1 {
|
|
default void max() { System.out.println("Max1::max"); }
|
|
}
|
|
|
|
interface Max2 {
|
|
default int max() { return 47; }
|
|
}
|
|
|
|
// class Max implements Max1, Max2 {}
|
|
/* Produces:
|
|
error: types Max2 and Max1 are incompatible;
|
|
both define max(), but with unrelated return types
|
|
class Max implements Max1, Max2 {}
|
|
^
|
|
1 error
|
|
*/
|