OCP Java17 SE Developers 复习题07

OCP Java17 SE Developers 复习题07_第1张图片

OCP Java17 SE Developers 复习题07_第2张图片

========================= 答案 =============================

========================= 答案 =============================

B, D.  Iguana does not compile, as it declares a static field with the same name as an instance field. Records are implicitly final and cannot be marked abstract, which is why Gecko compiles and Chameleon does not, making option B correct. Notice in Gecko that records are not required to declare any fields. BeardedDragon also compiles, as records may override any accessor methods, making option D correct. Newt does not compile because records are immutable, so any mutator methods that modify fields are not permitted. Overriding the equals() method is allowed, though.

OCP Java17 SE Developers 复习题07_第3张图片

========================= 答案 =============================

========================= 答案 =============================

A, B, D, E.  The code compiles without issue, so option G is incorrect. The blank can be filled with any class or interface that is a supertype of TurtleFrog. Option A is the direct superclass of TurtleFrog, and option B is the same class, so both are correct. BrazilianHornedFrog is not a superclass of TurtleFrog, so option C is incorrect. TurtleFrog inherits the CanHop interface, so option D is correct. Option E is also correct, as var is permitted when the type is known. Finally, Long is an unrelated class that is not a superclass of TurtleFrog and is therefore incorrect.

OCP Java17 SE Developers 复习题07_第4张图片

========================= 答案 =============================

========================= 答案 =============================

C.  When an enum contains only a list of values, the semicolon (;) after the list is optional. When an enum contains any other members, such as a constructor or variable, the semicolon is required. Since the enum list does not end with a semicolon, the code does not compile, making option C the correct answer. If the missing semicolon were added, the program would print 0 1 2 at runtime.

OCP Java17 SE Developers 复习题07_第5张图片

OCP Java17 SE Developers 复习题07_第6张图片

========================= 答案 =============================

========================= 答案 =============================

C.  A class extending a sealed class must be marked finalsealed, or non-sealed. Since Armadillo is missing a modifier, the code does not compile, and option C is correct.

OCP Java17 SE Developers 复习题07_第7张图片

OCP Java17 SE Developers 复习题07_第8张图片

========================= 答案 =============================

========================= 答案 =============================

E.  First, the declarations of HasExoskeleton and Insect are correct and do not contain any errors, making options C and D incorrect. The concrete class Beetle extends Insect and inherits two abstract methods, getNumberOfSections() and getNumberOfLegs(). The Beetle class includes an overloaded version of getNumberOfSections() that takes an int value. The method declaration is valid, making option F incorrect, although it does not satisfy the abstract method requirement inherited from HasExoskeleton. For this reason, only one of the two abstract methods is properly overridden. The Beetle class therefore does not compile, and option E is correct.

OCP Java17 SE Developers 复习题07_第9张图片

========================= 答案 =============================

========================= 答案 =============================

D, E.  Line 4 does not compile, since an abstract method cannot include a body. Line 7 also does not compile because the wrong keyword is used. A class implements an interface; it does not extend it. For these reasons, options D and E are correct.

OCP Java17 SE Developers 复习题07_第10张图片

========================= 答案 =============================

========================= 答案 =============================

E.  The inherited interface method getNumOfGills(int) is implicitly public; therefore, it must be declared public in any concrete class that implements the interface. Since the method uses the package (default) modifier in the ClownFish class, line 6 does not compile, making option E the correct answer. If the method declaration were corrected to include public on line 6, then the program would compile and print 15 at runtime, and option B would be the correct answer.

OCP Java17 SE Developers 复习题07_第11张图片

========================= 答案 =============================

========================= 答案 =============================

A, B, C.  Instance variables must include the private access modifier, making option D incorrect. While it is common for methods to be public, this is not required. Options A, B, and C fulfill this requirement.

OCP Java17 SE Developers 复习题07_第12张图片

OCP Java17 SE Developers 复习题07_第13张图片

========================= 答案 =============================

========================= 答案 =============================

A, E, F.  The setSnake() method requires an instance of SnakeCobra is a direct subclass, while GardenSnake is an indirect subclass. For these reasons, options A and E are correct. Option B is incorrect because Snake is abstract and requires a concrete subclass for instantiation. Option C is incorrect because Object is a supertype of Snake, not a subtype. Option D is incorrect as String is an unrelated class and does not inherit Snake. Finally, a null value can always be passed as an object value, regardless of type, so option F is also correct.

OCP Java17 SE Developers 复习题07_第14张图片

OCP Java17 SE Developers 复习题07_第15张图片

========================= 答案 =============================

========================= 答案 =============================

A, B, C, E.  Walk declares a private method that is not inherited in any of its subtypes. For this reason, any valid class is supported on line X, making options A, B, and C correct. Line Z is more restrictive, with only ArrayList or subtypes of ArrayList supported, making option E correct.

OCP Java17 SE Developers 复习题07_第16张图片

OCP Java17 SE Developers 复习题07_第17张图片

========================= 答案 =============================

========================= 答案 =============================

B.  Starting with Java 16, inner classes can contain static variables, so the code compiles. Remember that private constructors can be used by any methods within the outer class. The butter reference on line 8 refers to the inner class variable defined on line 6, with the output being 10 at runtime, and making option B correct.

OCP Java17 SE Developers 复习题07_第18张图片

========================= 答案 =============================

========================= 答案 =============================

A, B, E.  Encapsulation allows using methods to get and set instance variables so other classes are not directly using them, making options A and B correct. Instance variables must be private for this to work, making option E correct and option D incorrect. While there are common naming conventions, they are not required, making option C incorrect.

OCP Java17 SE Developers 复习题07_第19张图片

OCP Java17 SE Developers 复习题07_第20张图片

========================= 答案 =============================

========================= 答案 =============================

F.  When using an enum in a switch expression, the case statement must be made up of the enum values only. If the enum name is used in the case statement value, then the code does not compile. In this question, SPRING is acceptable, but Seasons.SPRING is not. For this reason, the three case statements do not compile, making option F the correct answer. If these three lines were corrected, then the code would compile and produce a NullPointerException at runtime.

OCP Java17 SE Developers 复习题07_第21张图片

========================= 答案 =============================

========================= 答案 =============================

A, C, D, E.  A sealed interface restricts which interfaces may extend it, or which classes may implement it, making options A and E correct. Option B is incorrect. For example, a non-sealed subclass allows classes not listed in the permits clause to indirectly extend the sealed class. Option C is correct. While a sealed class is commonly extended by a subclass marked final, it can also be extended by a sealed or non-sealed subclass marked abstract. Option D is correct, as the modifier is non-sealed, not nonsealed. Finally, option F is incorrect, as sealed classes can contain nested subclasses.

OCP Java17 SE Developers 复习题07_第22张图片

OCP Java17 SE Developers 复习题07_第23张图片

========================= 答案 =============================

========================= 答案 =============================

G.  Trick question—the code does not compile! For this reason, option G is correct. The Spirit class is marked final, so it cannot be extended. The main() method uses an anonymous class that inherits from Spirit, which is not allowed. If Spirit were not marked final, then options C and F would be correct. Option A would print Booo!!!, while options B, D, and E would not compile for various reasons.

OCP Java17 SE Developers 复习题07_第24张图片

========================= 答案 =============================

========================= 答案 =============================

E.  The OstrichWrangler class is a static nested class; therefore, it cannot access the instance member count. For this reason, line 5 does not compile, and option E is correct.

OCP Java17 SE Developers 复习题07_第25张图片

OCP Java17 SE Developers 复习题07_第26张图片

========================= 答案 =============================

========================= 答案 =============================

E, G.  Lines 2 and 3 compile with interface variables implicitly publicstatic, and final. Line 4 also compiles, as static methods are implicitly public. Line 5 does not compile, making option E correct. Non-static interface methods with a body must be explicitly marked private or default. Line 6 compiles, with the public modifier being added by the compiler. Line 7 does not compile, as interfaces do not have protected members, making option G correct. Finally, line 8 compiles without issue.

OCP Java17 SE Developers 复习题07_第27张图片

OCP Java17 SE Developers 复习题07_第28张图片

========================= 答案 =============================

========================= 答案 =============================

E.  Diet is an inner class, which requires an instance of Deer to instantiate. Since the main() method is static, there is no such instance. Therefore, the main() method does not compile, and option E is correct. If a reference to Deer were used, such as calling new Deer().new Diet(), then the code would compile and print b at runtime.

OCP Java17 SE Developers 复习题07_第29张图片

OCP Java17 SE Developers 复习题07_第30张图片

========================= 答案 =============================

========================= 答案 =============================

G.  The isHealthy() method is marked abstract in the enum; therefore, it must be implemented in each enum value declaration. Since only INSECTS implements it, the code does not compile, making option G correct.

OCP Java17 SE Developers 复习题07_第31张图片

========================= 答案 =============================

========================= 答案 =============================

A, D, F.  Polymorphism is the property of an object to take on many forms. Part of polymorphism is that methods are replaced through overriding wherever they are called, regardless of whether they're in a parent or child class. For this reason, option A is correct, and option E is incorrect. With hidden static methods, Java relies on the location and reference type to determine which method is called, making option B incorrect and option F correct. Finally, making a method final, not static, prevents it from being overridden, making option D correct and option C incorrect.

OCP Java17 SE Developers 复习题07_第32张图片

OCP Java17 SE Developers 复习题07_第33张图片

========================= 答案 =============================

========================= 答案 =============================

F.  The record defines an overloaded constructor using parentheses, not a compact one. For this reason, the first line must be a call to another constructor, such as this(500, "Acme", LocalDate.now()). For this reason, the code does not compile and option F is correct. If the parentheses were removed from the constructor to declare a compact constructor, then options A, C, and E would be correct.

OCP Java17 SE Developers 复习题07_第34张图片

========================= 答案 =============================

========================= 答案 =============================

C, D, G.  Option C correctly creates an instance of an inner class Cub using an instance of the outer class Lion. Options A, B, E, and H use incorrect syntax for creating an instance of the Cub class. Options D and G correctly create an instance of the static nested Den class, which does not require an instance of Lion, while option F uses invalid syntax.

OCP Java17 SE Developers 复习题07_第35张图片

OCP Java17 SE Developers 复习题07_第36张图片

========================= 答案 =============================

========================= 答案 =============================

D.  First, if a class or interface inherits two interfaces containing default methods with the same signature, it must override the method with its own implementation. The Penguin class does this correctly, so option E is incorrect. The way to access an inherited default method is by using the syntax Swim.super.perform(), making option D correct. We agree that the syntax is bizarre, but you need to learn it. Options A, B, and C are incorrect and result in compiler errors.

OCP Java17 SE Developers 复习题07_第37张图片

========================= 答案 =============================

========================= 答案 =============================

B, E.  Line 3 does not compile because the static method hunt() cannot access an abstract instance method getName(), making option B correct. Line 6 does not compile because the private static method sneak() cannot access the private instance method roar(), making option E correct. The rest of the lines compile without issue.

OCP Java17 SE Developers 复习题07_第38张图片

OCP Java17 SE Developers 复习题07_第39张图片

========================= 答案 =============================

========================= 答案 =============================

B.  Zebra.this.x is the correct way to refer to x in the Zebra class. Line 5 defines an abstract local class within a method, while line 11 defines a concrete anonymous class that extends the Stripes class. The code compiles without issue and prints x is 24 at runtime, making option B the correct answer.

OCP Java17 SE Developers 复习题07_第40张图片

OCP Java17 SE Developers 复习题07_第41张图片

========================= 答案 =============================

========================= 答案 =============================

C, F.  Enums are required to have a semicolon (;) after the list of values if there is anything else in the enum. Don't worry; you won't be expected to track down missing semicolons on the whole exam—only on enum questions. For this reason, line 5 should have a semicolon after it since it is the end of the list of enums, making option F correct. Enum constructors are implicitly private, making option C correct as well. The rest of the enum compiles without issue.

OCP Java17 SE Developers 复习题07_第42张图片

========================= 答案 =============================

========================= 答案 =============================

B, C, D, G.  The compiler inserts an accessor for each field, a constructor containing all of the fields in the order they are declared, and useful implementations of equals()hashCode(), and toString(), making options B, C, D, and G correct. Option A is incorrect, as the compiler would only insert a no-argument constructor if the record had no fields. Option E is incorrect, as records are immutable. Option F is also incorrect and not a property of records

OCP Java17 SE Developers 复习题07_第43张图片

OCP Java17 SE Developers 复习题07_第44张图片

========================= 答案 =============================

========================= 答案 =============================

A, B, D.  Camel does not compile because the travel() method does not declare a body, nor is it marked abstract, making option A correct. EatsGrass also does not compile because an interface method cannot be marked both private and abstract, making option B correct. Finally, Eagle does not compile because it declares an abstract method soar() in a concrete class, making option D correct. The other classes compile without issue.

OCP Java17 SE Developers 复习题07_第45张图片

OCP Java17 SE Developers 复习题07_第46张图片

========================= 答案 =============================

========================= 答案 =============================

F.  The code does not compile, so options A through C are incorrect. Both lines 5 and 12 do not compile, as this() is used instead of this. Remember, this() refers to calling a constructor, whereas this is a reference to the current instance. Next, the compiler does not allow casting to an unrelated class type. Since Orangutan is not a subclass of Primate, the cast on line 15 is invalid, and the code does not compile. Due to these three lines containing compilation errors, option F is the correct answer.

OCP Java17 SE Developers 复习题07_第47张图片

OCP Java17 SE Developers 复习题07_第48张图片

========================= 答案 =============================

========================= 答案 =============================

C, E.  Bird and its nested Flamingo subclass compile without issue. The permits clause is optional if the subclass is nested or declared in the same file. For this reason, Monkey and its subclass Mandrill also compile without issue. EmperorTamarin does not compile, as it is missing a non-sealedsealed, or final modifier, making option C correct. Friendly also does not compile, since it lists a subclass Silly that does not extend it, making option E correct. While the permits clause is optional, the extends clause is not. Silly compiles just fine. Even though it does not extend Friendly, the compiler error is in the sealed class.

你可能感兴趣的:(Java,java,ocp)