// generics/InheritBounds.java // ©2016 MindView LLC: see Copyright.txt class HoldItem { T item; HoldItem(T item) { this.item = item; } T getItem() { return item; } } class Colored2 extends HoldItem { Colored2(T item) { super(item); } java.awt.Color color() { return item.getColor(); } } class ColoredDimension2 extends Colored2 { ColoredDimension2(T item) { super(item); } int getX() { return item.x; } int getY() { return item.y; } int getZ() { return item.z; } } class Solid2 extends ColoredDimension2 { Solid2(T item) { super(item); } int weight() { return item.weight(); } } public class InheritBounds { public static void main(String[] args) { Solid2 solid2 = new Solid2<>(new Bounded()); solid2.color(); solid2.getY(); solid2.weight(); } } /* Output: (None) */