Ch. 10
False. The correct answer is: you *cannot* treat a superclass object as a subclass object, because a superclass object is not an object of any of its subclasses.
True or False: you *can* treat a superclass object as a subclass object, because a superclass object is not an object of any of its subclasses.
*Does specify* what operations are allowed. *Does not specify* how they're performed.
What *does* an interface specify about operations? What *does it not* specify about operations?
Implementing an interface
What allows objects of these classes to be processed polymorphically—objects of classes that *implement* the same interface can respond to all of the *interface* method calls.
A superclass reference
What can be used to invoke only the methods declared in the superclass?
to provide an appropriate superclass from which other classes can inherit and thus share a common design.
What is the purpose of an Abstract Class?
It must provide concrete implementations
What must each subclass of an abstract superclass provide of each of the superclass's abstract methods?
is-a
When a class implements an interface, the same ( is-a / has-a ) relationship provided by inheritance applies.
require direct knowledge of the new classes that we add to the hierarchy.
When a program is *extensible* the only parts of a program that must be altered are those that
subclass
When a superclass variable contains a reference to a subclass object, and that reference is used to call a method, the *( subclass / superclass )* version of the method is called
When unrelated (disparate) classes need to share common methods and constants
When is an interface typically used?
the specifics
When processing objects polymorphically, we typically do not need to worry about
checking the variable's class type.
When the compiler encounters a method call made through a variable, the compiler determines if the method can be called by...
object of the interface *type*
Objects of any subclasses of the class that implements the interface can also be thought of as...
A superclass reference
Only a reference to *what* can be used to invoke only the methods of the superclass—the subclass method implementations are invoked polymorphically.
new objects
Only client code that instantiates "____" "____" must be modified to accommodate new types
extensibility
Polymorphism promotes "____": Software that invokes polymorphic behavior is independent of the object types to which messages are sent.
False. The correct answer is: *NOT ALL* hierarchies contain abstract classes
True or False: All hierarchies contain abstract classes.
False! An abstract method *can* include methods with implementations *and* abstract methods
True or False: All methods in an *abstract class* must be declared as abstract methods.
True.
True or False: An object of a class that implements an interface may be thought of as an object of that interface type.
False! Only a *concrete subclass* must implement the method.
True or False: If a superclass declares and *abstract method*, a *subclass* must implement that method.
False! Trying to invoke a subclass-only method with a *superclass* variable is *NOT* allowed.
True or False: Invoking a *subclass only* method through a *subclass* variable is not allowed.
FALSE! You *should not* call overridable methods from constructors
True or False: You should call overridable methods from constructors
True
True or False: super- class variables are intended to refer to superclass objects, and subclass variables are intended to refer to subclass objects
Java interface
A "____" "____" describes a set of meth- ods that can be called on an object to tell it, for example, to perform some task or return some piece of information.
Polymorphism
"____" involves using a superclass variable to invoke methods on superclass and subclass objects, enabling you to "program in the general."
in the specific
*Occasionally*, when performing polymorphic processing, we need to program "_______________________"
realize
A class is said to "____", or *implement*, the methods of an interface.
abstract class
A class that contains *any* abstract methods must be declared as an...
explicitly
A class that contains any abstract methods must be ( implicitly / explicitly ) declared abstract even if that class contains some concrete (nonabstract) methods.
- abstract - abstract
A class that does not implement all the methods of the interface is an "____" class and must be declared "____".
Incomplete
Abstract Classes classes cannot be used to instantiate objects, because they're "____"
Downcasting
Enables the program to invoke subclass methods that are not in the superclass
what is common among subclasses
Abstract superclasses are too general to create real objects. They specify only...
1. public 2. static 3. final
All *fields* declared in an interface are implicitly... (There are three answers)
public abstract
All *methods* declared in an interface are implicitly what kind of methods?
Dynamic Binding or Late Binding
All calls to method toString are resolved at execution time, based on the type of the object to which a method refers. This process is known as...
public
All interface members must be ( public / protected / private ). Choose one.
One or more
An abstract class *normally* contains how many abstract methods?
Polymorphism
Enables us to write programs that process object that share the same superclasses as if they were all object of the superclass; this can simplify programming.
Polymorphism
Enables you to "program in the general" rather than "program in the specific."
1. Constants 2. abstract methods
An interface declaration begins with the keyword interface and contains only what two things?
dynamic binding
As a result of "____" "____", Java decides which class's toString method to call at execution time rather than at compile time.
compilation error
Assigning a superclass variable to a subclass variable is a....
Dynamic Binding
At execution time, the type of the object to which the variable refers determines the actual method to use. This process is called....
compilation
Attempting to declare a subclass of a final class is a "____" error
Abstract Superclasses
Because Abstract Classes are used only as superclasses in inheritance hierarchies, we refer to them as...
Polymorphism
Enables you to write programs that process objects that share the same superclass, either directly or in- directly, as if they were all objects of the superclass;
NO!!!
Can a final *class* be extended to create a subclass?
No. this guarantees that the final method implementation will be used by all direct and indirect subclasses in the hierarchy.
Can a final method be overridden in a subclass? Why or why not?
No they cannot!
Can constructors and static methods be declared abstract?
downcasting
Casting a reference stored in a superclass *variable* to a superclass *type* is called "____"
concrete
Class from which object can be instantiated are called "____" classes.
Concrete Classes
Classes that can be used to instantiate objects are called
Concrete Classes
Classes that can be used to instantiate objects are called...
instantiate objects
Concrete classes provide the specifics that make it reasonable to...
No!
Do abstract method provide implementations?
No you do not! Because they are always public and abstract
Do you need to declare interface *methods* as public and abstract? Why or why not?
device driver
For each device, the operating system uses a piece of software called a "____" "____" to control all communication between the system and the device.
abstract
If a class contains at least one abstract method, it's a(n) "____" class.
1. superclass 2. subclass
If a program needs to perform a subclass-specific operation on a subclass object referenced by a superclass variable, the program must first cast the *(subclass / superclass )* reference to a *( subclass / superclass )* reference through a technique known as downcasting.
references
Like public abstract *classes*, interfaces are typically public ( types / references ).
abstract
Methods that *are not* interface methods and *do not* provide implementations are declared using the keyword "____."
final
Methods that are declared static are also implicitly...
Interfaces
Software object communicate via...
Abstract Classes
Sometimes it's useful to declare classes for which you never intend to create objects. These classes are called...
Something is "extensible"
Technique in which new classes can be added with little or no modification to the general portions of the program, as long as the new classes are part of the inheritance hierarchy that the program processes generically.
up
The *is-a* relationship applies only ( up / down ) the hierarchy from a subclass to its direct (and indirect) superclasses, and not vice versa!
explicitly
The Java compiler allows the assignment of a superclass reference to a subclass variable if we (implicitly / explicitly ) cast the *superclass reference* to the *subclass type*
realization
The UML expresses the relationship between a class and an interface through a relationship known as...
Abstract Class
The primary purpose of this *class* is to provide an appropriate superclass from which other classes can inherit and this share a common design.
Abstract Classes
These *classes* cannot be used to instantiate objects, because they're incomplete.
Abstract Classes
These *classes* sometimes constitute several levels of a hierarchy.
public default methods
These *methods* with *concrete default* implementations specify how operations are performed when an implementing class does not override the methods.
Concrete Classes
These classes provide implementations of every method they declare.
an interface
This is often used in place of an abstract class when there's no default implementation to inherit—that is, no fields and no default method implementations.
a concrete class
To use an interface, *what* *must* specify that it implements the interface and *must* declare each method in the interface with the signature specified in the interface declaration?
False! Abstract methods *DO NOT* provide implementations.
True or False: Abstract methods provide implementations.
because it's not possible to override them in a subclass
Why are methods that are declared private implicitly final?
To reduce client code's dependencies on specific subclass types
Why do programmers often write client code that uses only abstract superclasses?
extensible
With polymorphism, we can design and implement systems that are easily "____"
default methods
With these methods, you can instead declare common method implementations in interfaces, which gives you more flexibility in designing your classes.
abstract
You can make an *abstract* class by declaring it with the *keyword*...
Abstract Method
an instance method with keyword abstract in its declaration
compilation errors.
attempting to invoke subclass-only methods through a superclass reference results in...
Interfaces
define and standardize the ways in which things such as people and systems can interact with one another
Polymorphism
enables you to deal in generalities and let the execution-time environment handle the specifics.
the type of the referenced object, not the type of the variable
invoking a method on a subclass object via a superclass reference invokes the subclass functionality. What determines which method is called?
Polymorphism
occurs when a program invokes a method through a superclass variable—at execution time, the correct subclass version of the method is called, based on the type of the reference stored in the superclass variable.
Polymorphism
particularly effective for implementing so-called layered software systems
interfaces
particularly useful for assigning common functionality to possibly unrelated classes.