package x; class Data { } abstract class Abstract { public String foo(T data) { return "foo"; } } interface Interface { public String foo(T data); } class Implementation extends Abstract implements Interface { }