我有一个场景,其中有几个子类具有相似的实现和一些额外的方法,每个子类的实现不同。我假设抽象类对于这种情况是一个不错的选择。但是如果那个抽象类实现一个包含所有方法声明的接口(interface)会更好吗?或者我应该坚持使用抽象类。简而言之,我想知道在哪些情况下我应该更喜欢层次结构顶部的抽象类而不是接口(interface)。 最佳答案 如果您的子类与抽象类有is-a关系,请使用抽象类。您可以同时拥有抽象类和接口(interface)-抽象类指定实现,接口(interface)指定API。集合框架就是一个例子——它有ArrayListe
以下可以吗?(请记住,我没有编写类的主体,也没有编写接口(interface);-))abstractclassSuperClassimplementsSuperInterfaceclassSubClassextendsSuperClassimplementsSubInterface或者这通常被认为是不好的做法?让我感到奇怪的是,以下内容不起作用:ListmyList;...for(SuperInterfacesi:myList){...} 最佳答案 不好也不坏。SubClass在这里实现了SuperInterface和SubInt
我已经实现了ListSelectionListener,如下所示,因此在选择第一个表中的特定行后,第二个表会相应更新。classSelectionListenerimplementsListSelectionListener{publicSelectionListener(){}@OverridepublicvoidvalueChanged(ListSelectionEvente){if(e.getSource()==myTrumpsAndMessages.jTable1.getSelectionModel()&&myTrumpsAndMessages.jTable1.getRowSe
我想制作一个接口(interface),强制实现它的每个类都具有特定功能,用于实现类的类型。假设我有类MyClassA、MyClassB、MyClassC等,它们都需要在它们自己的类型上有一个函数:在MyClassA中:publicclassMyClassAimplementsMyClass{MyClassAfunction(MyClassAx){doSomethingImplementedInMyClassA(x);}}在MyClassB中:publicclassMyClassBimplementsMyClass{MyClassBfunction(MyClassBx){doSomet
我有一个来自另一个闭源库的类,但我希望能够为它使用一个接口(interface)。原因是我不想到处进行instanceof检查或null检查,但我也不想扩展现有的类。例如,假设我有这段代码:publicclassExample{//QuietFooisfromanotherlibrarythatIcan'tchangeprivatestaticQuietFooquietFoo;//LoudFooismyowncodeandismeanttoreplaceQuietFooprivatestaticLoudFooloudFoo;publicstaticvoidmain(String[]ar
我很难理解解释接口(interface)继承的java方式,例如:publicinterfaceModel{ModelgetModel();voidsetModel(Modelmodel);}publicclassBaseModelimplementsModel{@OverridepublicBaseModelgetModel(){returnnull;}//works@OverridepublicvoidsetModel(BaseModelmodel){}//compilationerror,itwantsModelinsteadofBaseModel}谁能解释为什么第一种方法有效而
这个问题在这里已经有了答案:Precisedefinitionof"functionalinterface"inJava8(9个回答)关闭6年前。Java8中函数式接口(interface)的定义说:Afunctionalinterfaceisdefinedasanyinterfacethathasexactlyoneexplicitlydeclaredabstractmethod.(Thequalificationisnecessarybecauseaninterfacemayhavenon-abstractdefaultmethods.)Thisiswhyfunctionalint
在一次面试中,面试官问了这个问题。在一个Interface1中有10个方法并且实现该Interface1有1000个类。后来在Interface1中我添加了第11种方法。您如何在所有类中实现第11种方法。后来他问你怎么能只在几个类(class)里实现。由于有1000个类(class),您不能只去每个类(class)并实现,这很花时间。你能告诉我如何解决吗? 最佳答案 他可能在暗示接口(interface)中的默认方法(仅适用于java8)。例如:interfaceMyInterface{defaultvoidmethod(){//d
作为标记接口(interface),实现可克隆接口(interface)有什么用?我总是可以在我的类中创建一个publicObjectclone()方法。可克隆接口(interface)的实际用途是什么? 最佳答案 这是因为如果您的对象不是Cloneable,clone()方法会抛出CloneNotSupportedException。你应该看看documentationforclone()方法。以下是Object类中clone()方法的声明方式:protectedObjectclone()throwsCloneNotSupport
这个问题在这里已经有了答案:Implementingmultipleinterfaceshavingsamemethod(5个答案)Implementingtwointerfacesinaclasswithsamemethod.Whichinterfacemethodisoverridden?(8个答案)关闭9年前。有两个接口(interface)B和C,每个接口(interface)都有相同的方法publicm1()classAimplementsBandC如果类A必须实现方法m1(),那么实现的方法是哪个接口(interface)的?