Crossfire JXClient, Trunk
DiamondInheritance.java
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  *
8  * - Redistributions of source code must retain the above copyright
9  * notice, this list of conditions and the following disclaimer.
10  *
11  * - Redistributions in binary form must reproduce the above copyright
12  * notice, this list of conditions and the following disclaimer in the
13  * documentation and/or other materials provided with the distribution.
14  *
15  * - Neither the name of Oracle nor the names of its
16  * contributors may be used to endorse or promote products derived
17  * from this software without specific prior written permission.
18  *
19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
20  * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
21  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
23  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
24  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
25  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
26  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
27  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
28  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
29  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30  */
31 
54 public class DiamondInheritance {
55 
61  public interface Animal {
62 
68  String go();
69  }
70 
76  public interface Horse extends Animal {
77 
83  @Override
84  default String go() {
85  return this.getClass().getSimpleName() + " walks on four legs";
86  }
87  }
88 
94  public interface Bird extends Animal {
95 
101  @Override
102  default String go() {
103  return this.getClass().getSimpleName() + " walks on two legs";
104  }
105 
111  default String fly() {
112  return "I can fly";
113  }
114  }
115 
122  public static class Pegasus implements Horse, Bird {
123 
131  @Override
132  public String go() {
133  return Horse.super.go();
134  }
135  }
136 
142  public static void main(final String[] args) {
143  System.out.println(new Pegasus().go());
144  }
145 }
DiamondInheritance.Bird
Definition: DiamondInheritance.java:94
DiamondInheritance.Horse
Definition: DiamondInheritance.java:76
DiamondInheritance.Animal
Definition: DiamondInheritance.java:61
DiamondInheritance.Pegasus
Definition: DiamondInheritance.java:122
DiamondInheritance.Bird.fly
default String fly()
Definition: DiamondInheritance.java:111
DiamondInheritance.Pegasus.go
String go()
Definition: DiamondInheritance.java:132
DiamondInheritance
Definition: DiamondInheritance.java:54
DiamondInheritance.main
static void main(final String[] args)
Definition: DiamondInheritance.java:142
DiamondInheritance.Animal.go
String go()
DiamondInheritance.Horse.go
default String go()
Definition: DiamondInheritance.java:84
DiamondInheritance.Bird.go
default String go()
Definition: DiamondInheritance.java:102