Java 是否有可能使接口在不可实现的情况下可扩展?

Java 是否有可能使接口在不可实现的情况下可扩展?,java,interface,package,visibility,extends,Java,Interface,Package,Visibility,Extends,为了做出我认为合理的类比,假设我有一个“饮料”界面。我可以填满它,扔掉它,也许还可以做一些其他的事情。在我把吸管放进去之前,我需要知道有多少人在喝这种饮料。因此,这自然会导致一个带有drinkFromStraw()方法的“OneStrawDrink”接口和一个带有drinkFromLeftStraw()和drinkFromRightStraw()方法的“TwoStrawDrink”接口。如果我需要改变饮料的功能,我更希望这两个接口都能扩展饮料接口,但我不希望任何人能够实现“饮料”接口,因为在不知

为了做出我认为合理的类比,假设我有一个“饮料”界面。我可以填满它,扔掉它,也许还可以做一些其他的事情。在我把吸管放进去之前,我需要知道有多少人在喝这种饮料。因此,这自然会导致一个带有drinkFromStraw()方法的“OneStrawDrink”接口和一个带有drinkFromLeftStraw()和drinkFromRightStraw()方法的“TwoStrawDrink”接口。如果我需要改变饮料的功能,我更希望这两个接口都能扩展饮料接口,但我不希望任何人能够实现“饮料”接口,因为在不知道要放多少吸管的情况下,它是不可饮用的。oneStrawDrink和twoStrawDrink仍必须被识别为我的软件包之外的饮料,因此不能将饮料接口软件包保留为私有。是否有可能使饮料界面无法实现?或者我必须重新构造它才能获得所需的功能?

听起来你应该重新构造一些东西。您的接口要么是,要么实际上不应该是,或者类似的东西。我认为从dink接口扩展会使它变得更简单。将饮料的所有方法复制到其他接口中,并将饮料作为空接口保留是否可取?所有饮料共有的东西应该在一个接口中。所有两种稻草一样的东西应该放在一起。两根稻草不一定能延长饮料的长度。例如,TwoStraw饮料可以实现饮料和TwoStraw。或者TwoStraw饮料可以实现饮料,并有一个成员实现TwoStraw。