开闭原则指出“软件实体(类、模块、函数等)应该对扩展开放,对修改关闭”。然而,JoshuaBloch在他的名著《EffectiveJava》中给出了以下建议:“设计和记录继承,否则禁止它”,并鼓励程序员使用“final”修饰符来禁止子类化。我认为这两个原则显然相互矛盾(我错了吗?)。您在编写代码时遵循哪个原则,为什么?你是让你的类保持打开状态,不允许继承其中一些(哪些?),还是尽可能使用final修饰符? 最佳答案 坦率地说,我认为开放/封闭原则与其说是不合时宜的,不如说是不合时宜的。这似乎是从80年代和90年代开始的,当时OO框架
一个抽象类只能作为基类被其他类扩展,对吧?抽象类的构造函数可以具有通常的访问修饰符(public、protected和private(供内部使用))。protected和public中的哪一个是正确的访问修饰符,因为抽象类型似乎表明从技术上讲公共(public)构造函数将非常protected?我应该只在所有构造函数上使用protected吗? 最佳答案 sincetheabstracttypeseemstoindicatethattechnicallyapublicconstructorwillactverymuchprotect
一个抽象类只能作为基类被其他类扩展,对吧?抽象类的构造函数可以具有通常的访问修饰符(public、protected和private(供内部使用))。protected和public中的哪一个是正确的访问修饰符,因为抽象类型似乎表明从技术上讲公共(public)构造函数将非常protected?我应该只在所有构造函数上使用protected吗? 最佳答案 sincetheabstracttypeseemstoindicatethattechnicallyapublicconstructorwillactverymuchprotect
在Java中,访问说明符和访问修饰符是一回事吗? 最佳答案 “访问修饰符”是Javalanguagespecification中使用的private、protected和public的官方术语。.“访问说明符”在JavaAPIdoc中同义使用。,但这是我第一次注意到这一点。坚持使用JLS术语可能会更好。 关于java-访问说明符和访问修饰符有什么区别?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/
在Java中,访问说明符和访问修饰符是一回事吗? 最佳答案 “访问修饰符”是Javalanguagespecification中使用的private、protected和public的官方术语。.“访问说明符”在JavaAPIdoc中同义使用。,但这是我第一次注意到这一点。坚持使用JLS术语可能会更好。 关于java-访问说明符和访问修饰符有什么区别?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/
据我了解,以下代码应该将true打印为输出。但是,当我运行此代码时,它正在打印false.来自AnonymousClasses15.9.5.的Java文档:AnanonymousclassisalwaysimplicitlyfinalpublicclassTest{publicstaticvoidmain(Stringargs[]){Objecto=newObject(){};System.out.println("Annonymousclassisfinal:"+Modifier.isFinal(o.getClass().getModifiers()));}}为什么这段代码会这样?
据我了解,以下代码应该将true打印为输出。但是,当我运行此代码时,它正在打印false.来自AnonymousClasses15.9.5.的Java文档:AnanonymousclassisalwaysimplicitlyfinalpublicclassTest{publicstaticvoidmain(Stringargs[]){Objecto=newObject(){};System.out.println("Annonymousclassisfinal:"+Modifier.isFinal(o.getClass().getModifiers()));}}为什么这段代码会这样?
据我了解,以下代码应将False打印为输出但是,当我运行此代码时,它会打印True作为输出。来自Java文档:Returntrueiftheintegerargumentincludestheabstractmodifier,falseotherwise.publicclassTest{publicstaticvoidmain(String[]args){System.out.println(Modifier.isAbstract(byte[].class.getModifiers()));}}谁能帮我理解这种行为? 最佳答案 Ja
据我了解,以下代码应将False打印为输出但是,当我运行此代码时,它会打印True作为输出。来自Java文档:Returntrueiftheintegerargumentincludestheabstractmodifier,falseotherwise.publicclassTest{publicstaticvoidmain(String[]args){System.out.println(Modifier.isAbstract(byte[].class.getModifiers()));}}谁能帮我理解这种行为? 最佳答案 Ja
有人告诉我,我误解了final的影响.final有什么作用关键词?这是我的想法的简短概述,我知道:Javafinalmodifier(akaaggregationrelation)primitivevariables:canbesetonlyonce.(memoryandperformancegain)objectsvariables:maybemodified,finalappliestoobjectreference.fields:canbesetonlyonce.methods:can'tbeoverridden,hidden.classes:can'tbeextended.ga