Questions and Answers
What is the result of the code printing from the Gazer class?
21
The Gazer class has access to Navel's private static and private instance variables.
True
What is the correct result of the code in the Pockets class?
What is the correct result of the code in the Pockets2 class?
Signup and view all the answers
What does the enhanced for loop on line 5 of the Pockets2 class do?
Signup and view all the answers
What does the Arrays.sort method on line 6 do in the Pockets2 class?
Signup and view all the answers
What is printed by the enhanced for loop on line 8 of the Pockets2 class?
Signup and view all the answers
What is the result of the given code snippet?
Signup and view all the answers
What is the result of the given code snippet?
Signup and view all the answers
What is the result of the given code snippet?
Signup and view all the answers
Which, inserted independently at line 6, compiles and produces the output 'spooky'?
Signup and view all the answers
What is the result of the given code snippet?
Signup and view all the answers
Which, inserted independently at line 5, produces the output 'hi'?
Signup and view all the answers
What is the result of the given code snippet?
Signup and view all the answers
What is the result of the given code snippet?
Signup and view all the answers
The inner class has access to all members of the outer class, even private members.
Signup and view all the answers
The inner class has access to all members of the outer class but not private members.
Signup and view all the answers
The above code will give:
Signup and view all the answers
The above code will give:
Signup and view all the answers
The above code will give:
Signup and view all the answers
The above code will give:
Signup and view all the answers
The above code will give:
Signup and view all the answers
The above code will give:
Signup and view all the answers
What's the name given to an inner class declared without any class name?
Signup and view all the answers
The above code will give:
Signup and view all the answers
The above code will give:
Signup and view all the answers
The above code will give:
Signup and view all the answers
The above code will give:
Signup and view all the answers
The above code will give:
Signup and view all the answers
List three benefits of nested classes.
Signup and view all the answers
The above code will give:
Signup and view all the answers
The above code will give:
Signup and view all the answers
Which are true about a static nested class? (Choose all that apply)
Signup and view all the answers
Which statements create an anonymous inner class from within class Bar? (Choose all that apply)
Signup and view all the answers
Which are true about a method-local inner class? (Choose all that apply)
Signup and view all the answers
Study Notes
Inner Classes Overview
- Inner classes have access to all members of their enclosing (outer) class, including private members.
- An inner class requires an instance of the outer class for instantiation unless it's a static inner class.
Instantiation and Access
- Inner classes need an instance of the outer class to be created from static methods.
- Attempting to instantiate an inner class using
new Inner()
in a static context results in a compiler error. - Static inner classes can be instantiated without an instance of the outer class.
Local Inner Classes
- Local inner classes can access instance members of the enclosing class.
- Local inner classes cannot access local variables directly unless those variables are declared final or effectively final.
Anonymous Inner Classes
- Anonymous inner classes allow for extending or implementing classes on the fly without a named class definition.
- Their syntax entails defining the class and providing method implementations inline.
Abstract Classes and Inner Classes
- Inner classes can exist within abstract classes, and accessing them requires creating an instance of the abstract class.
- If an inner class is static within an abstract class, it can be instantiated without a reference to the outer class’s instance.
Method-local Concerns
- Method-local inner classes can be declared abstract, but they cannot be public or static.
- They can access private members of the enclosing class as they maintain a close bond to the instance of the outer class.
Compiler Errors & Solutions
- Errors may arise when trying to narrow access levels (e.g., from public to default) or improperly reference instance members.
- Solutions often involve adjusting access modifiers and instantiation syntax to align with Java's rules on inner classes.
Miscellaneous
- Anonymous inner classes without properly ending statements with semicolons may lead to compilation errors.
- An inner class can serve as a way to keep related code together, enhancing encapsulation and maintainability.
Benefits of Nested Classes
- Nested classes help group related classes that are only used in one place, increasing encapsulation and leading to more maintainable code.
Key Concepts on Class Interactions
- A static nested class does not require an instance of the outer class and cannot access non-static members.
- Polymorphism applies to anonymous inner classes, allowing superclass references to hold subclass types.
Summary of Method-local Inner Class Rules
- Method-local inner classes can be non-final, can be abstract but cannot be static or public, and have access to all enclosing class's members.### Compilation Errors and Object References
- Compilation fails due to the attempt to access a member variable
name
from anObject
reference that does not include the member's context. - Using a reference variable of type
Object
limits access to members defined solely within classObject
.
Abstract Classes and Anonymous Inner Classes
- An anonymous class can implement methods from its enclosing class; in this case, the inner class
Bar
has a method that can be overridden. - The output of the program when invoking
f.getNum()
andt.getNum()
is 57 and 22, respectively. - Creating instances of anonymous subclasses allows overriding methods directly without creating separate named classes.
Inner Class Access and Methods
- Inner classes can be instantiated independently only if tied to an instance of the outer class.
- The correct instantiation syntax for an inner class uses the outer class instance followed by
.new
.
Class Shadowing and Method Execution
- Inner classes can shadow outer classes' names but do not interfere with previously defined classes that are out of scope.
- The method
m()
executed belongs to the outermost scope if no inner class shadowing occurs in the proper context.
Inner Class Constructor and Outer Instance Method Invocation
- To call an outer instance method from an inner class, proper referencing like
OuterClassName.this.methodName()
is required. - Constructors of inner classes can invoke methods from the outer class, enhancing encapsulation.
Exception Handling and Compilation
- Overridden methods in subclasses can throw exceptions without changing the exception type, ensuring compliance with the superclass declaration.
- All methods correctly handling exceptions leads to the correct output when no output is produced from overridden empty methods.
Access to Private Members
- Inner classes have access to both static and instance members of the enclosing class, even if they are private.
- An inner class can calculate values based on these private members, maintaining encapsulation.
Lambda Expressions and Comparators
- Lambda expressions simplify comparator definitions in sorting methods, eliminating the need for separate comparator classes.
- The output of sorting a string array in ascending order using a lambda expression is structured based on alphabetical order.
Compilation Issues with Inner Classes
- Static inner classes cannot be instantiated from static methods unless defined as static.
- Compilation fails if the inner class does not adhere to proper scoping rules related to the outer class.
Summary of Result Outputs
- Each block of code highlights specific outputs based on context and function calls, clearly showing method pathways and results.
- Understanding Java’s access control mechanisms in relation to inner and anonymous classes is key to anticipating compilation and runtime behavior.### Java Program Overview
- The program imports the Java utility package for functionalities such as sorting.
- The main class is defined as
Pockets2
, containing the main method for execution.
String Array Initialization
- An array of strings named
sa
is initialized with elements:"nickel"
,"button"
,"key"
, and"lint"
.
Printing Unsorded Array
- An enhanced for loop iterates through
sa
and prints its elements to the console in unsorted order. - Initial output before sorting:
nickel button key lint
.
Sorting the Array
- The
Arrays.sort()
method is used with a lambda expression((a, b) -> a.compareTo(b))
to sort the string array alphabetically. - The lambda expression compares each pair of strings based on their natural ordering.
Printing Sorted Array
- After sorting, another enhanced for loop prints the elements of the string array
sa
to the console. - Final output after sorting:
button key lint nickel
.
Incorrect Answer Identification
- Answers labeled A, B, D, E, and F are identified as incorrect based on information provided in the text.
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.
Description
Test your knowledge of Java 8's inner classes with these flashcards. This quiz covers the access levels of inner classes to outer class members, including private variables. Perfect for Java developers preparing for the OCP exam.