Java Inheritance
What is the relationship between objects and abstract classes?
-You cannot construct an object of an abstract class -BUT you can still have an object reference whose type is an abstract class (must be an inherited concrete subclass)
when would you consider using interfaces over abstract methods?
-You expect that unrelated classes would implement your interface. For example, the interfaces Comparable and Cloneable are implemented by many unrelated classes. -You want to specify the behavior of a particular data type, but not concerned about who implements its behavior. -You want to take advantage of multiple inheritance of type.
when would you consider using abstract methods over interfaces?
-You want to share code among several closely related classes. -You expect that classes that extend your abstract class have many common methods or fields, or require access modifiers other than public (such as protected and private). -You want to declare non-static or non-final fields. This enables you to define methods that can access and modify the state of the object to which they belong.
HAS-A relationship
-are mainly based on the usage -determines whether a certain class HAS-A certain thing. -helps to reduce duplication of code as well as bugs.
Superclass reference variable
-can hold the subclass object -but using that variable you can access only the members of the superclass -access the members of both classes it is recommended to always create reference variable to the subclass.
superclass
-the class whose properties are inherited -(base class, parent class)
The ______ method compares the data in objects
.equals()
Chapter 8 Objectives:
1) Explore the derivation of new classes from existing ones. 2) Define the concept and purpose of method overriding. 3) Discuss the design of class hierarchies 4)Examine the purpose and use of abstract classes. 5) Discuss the issue of visibility as it relates to inheritance. 6) Discuss object-oriented design in the context of inheritance.
Steps to developing an Inheritance Hierarchy:
1) List the classes that are part of the hierarchy 2) Organize classes into an inheritance hierarchy 3) Determine common responsibilities 4) Decide which methods are overridden in the subclass 5) Declare the public interface of each subclass 6) Identify instance variables 7) Implement constructors and methods 8) Construct objects of different subclasses and process them
Object has ___ methods, some of which can, and should, be __________.
11; overridden
Describe the relationship between a parent class and a child class.
A child class is derived from a parent class using inheritance. The methods and variables of the parent class automatically become a part of the child class, subject to the rules of the visibility modifiers used to declare them.
False
A child class may have more than one parent class in java (T/F).
Why would a child class override one or more of the methods of its parent class?
A child class may prefer its own definition of a method in favor of the definition provided for it by its parent. In this case, the child overrides (redefines) the parent's definition with its own.
Class Hierarchy
A child of one class can be the parent of another, creating a...
one, many
A class can have exactly ___ parent class, but it might have ____ child classes.
False
A class declared as abstract must contain abstract methods (T/F).
child class
A class derived from a parent class. Also called a subclass.
subclass
A class derived from a superclass. Also called a child class.
False
A class reserves memory space for variables (T/F).
abstract class
A class used to represent a generic concept in a class hierarchy. An abstract class cannot be instantiated.
False
A class with abstract methods does not necessarily have to be declared 'abstract' (T/F).
abstract method
A method header without a body, used to establish the existence of an operation before the implementation is available. A class that contains an abstract method is inherently abstract.
Super Reference
A parent's constructor can be invoked using the...
Object, Reference
A polymorphic reference uses the type of the ... , not the type of the ... , to determine which version of a method to invoke.
True
A reference variable can refer to any object created from any class related to it by inheritance (T/F).
Polymorphic Reference
A reference variable that can refer to different types of objects at different times.
Placeholders
Abstract classes act as .... in a class hierarchy.
Abstract classes are declared with the ______ modifier in the header.
Abstract.
What is the keyword must be used to inherit a class?
"extends"
toString
-method that returns a string representation for each object, used for debugging example: Rectangle box = new Rectangle(5, 10, 20, 30); String s = box.toString(); // Sets s to "java.awt.Rectangle[x=5,y=10,width=20,height=30]"
superclass
A class from which another is derived. Also called a parent class or base class.
Are all members of a parent class inherited by the child? Explain.
A class member is not inherited if it has private visibility, meaning that it cannot be referenced by name in teh child class. However, such members do exist for the child and can be referenced indirectly.
Object Class
All classes are derived directly or indirectly from the...
Why are private methods essentially final?
Because they cannot be overridden
step 4 of equals
Cast the other object to your class type
overload
Does public boolean equals(Employee otherEmp) override or overload the Object's equals method?
Inheritance
How a new class is created from an existing one.
mechanism for extending existing classes by adding methods and fields
Inheritance
multiple inheritance
Inheritance in which a subclass can be derived from multiple parent classes. Java does not support multiple inheritance.
single inheritance
Inheritance in which a subclass can have only one parent. Java supports only single inheritance.
True
Inherited variables and methods can be used in the derived class if they had been declared locally (T/F).
A ______ cannot be instantiated
Interface
Inheritance can be applied to _________ so that one _______ can be derived from another. (not classes)
Interfaces.
Compile time, Runtime, Late Binding, Dynamic Binding
Most binding occurs at ... , but for polymorphic references binding is done at ... (Called ... or ...)
extends
Notice the keyword ______ which tells the compiler that Salesperson is a subclass of Employee.
All classes are derived ultimately from the ______ class.
Object
All classes are subclasses of the _________ class.
Object
In Java, all classes inherit from the ______ class by default
Object
The .equals() method is inherited from the ______ class
Object
What is the difference between package access and protected access?
Package access - subclasses must be inside of the packages for them to be able to access members of superclasses. Protected access - subclasses must simply inherit from a superclass to gain access to protected members
The point of an abstract class is:
Placeholder in the class hierarchy, may contain partial description that is inherited by all it's descendants.
A subclass constructor must always class on the ______________.
Superclass constructor
step 1 of equals
Test whether the objects refer to same place: if (this == otherObj) return true;
step 2 of equals
Test whether the other object is null: if (otherObj == null) return false;
Class Hierarchy
The "family tree" of classes.
fields
The Object class contains no ___
methods
The Object class contains several ____
super
The Salesperson class also needs a name and salary, but it doesn't need to define them, since it inherits them from its _____ class.
hierarchy
The _______ (sub-class/superclass relationships) of classes can go many levels.
A _____ object generates action events at regular intervals and can be used to control an animation.
Timer
Why should you call setters in the constructor instead of directly modifying data members?
To make input cleaner and to filer it.
How do you access the initialized variables of the superclass in the subclass?
Using the superclass constructor, which can be called through the subclass's constructor AS LONG AS it's the FIRST STATEMENT in the subclass constructor
False
We can create an object from an abstract class (T/F).
compiler error, parent does not have that method
What will happen if you create a reference of a child object to a parent and try to access the child's methods?
Shadowing Variables
When a child class declares a variable with the same name as one that is inherited from the parent.
Overrides
When a child class defines a method with the same name/signature as a method of the parent class, the child class... the parent.
True
When changes are made to the parent class, the children are affect automatically (T/F).
Subclasses
a class that is a special case of an existing class
abstract methods
a class that is declared abstract—it may or may not include abstract methods. Abstract classes cannot be instantiated, but they can be subclassed.
in enumeration classes, the toString method returns
a string that equals the objects name
parent
a subclass inherits fields and methods from its
protected features can be accessed by
all subclasses and all classes in the same package
cannot
an abstract class ___ be instantiated
reflexive, symmetric, transitive, consistent, and not null
an equals methods must be
The subclass inherits these from the superclass
behavior and state
extends syntax
class Super { ..... ..... } class Sub extends Super { ..... ..... }
makes a new object with the same state as an existing object
clone method
One important reason got inheritance
code reuse
if an object is null, instanceOf will return
false!
Inheritance is a mechanism in which one class can inherit the ______ and methods of another "parent" class
fields
Common features should be located as ______ in a class hierarchy as possible.
high, maximizes the potential to reuse classes, facilitates maintenance activities.
How to successfully cast obj to be of type Question, using instanceOf:
if (obj instanceof Question) { Question q = (Question) obj; }
testing whether two objects belong to the same class
if (otherObject == null) return false; if (getClass() != otherObject.getClass()) return false;
Finished House
if classes are the floor plans, an object is the...
cast
if you implement a generic Comparable interface, you do not have to ___ to use the class's methods
overriding a method
if you specify a method with the same signature (same name and same parameter types) it overrides the method of the same name in the superclass
Interfaces can be ______ by other classes or abstract classes
implemented
The keyword used to inherit an Interface is...
implements
If no superclass constructor reference exists in the subclass constructor, then the superclass _________________ a default superclass constructor _________ before any code is run in the constructor.
implicitly calls; super()
failing to invoke the superclass method results in
infinite recursion
sets of classes can form complex
inheritance hierarchies
An abstract class cannot be ______
instantiated
polymorphism
is the ability of an object to take on many forms. The most common use of polymorphism in OOP occurs when a parent class reference is used to refer to a child class object.
extends
is the keyword used to inherit the properties of a class
The Object class is defined in the ________ package.
java.lang
A ______ class can be created by deriving it from an event adapter class.
listener
An alternate technique for creating a _____ class is to extend an event adapter class.
listener
polymorphism allows us to:
manipulate objects that share a set of tasks even though the tasks are executed in different ways
______ methods and variables of the parent cannot be referenced in the child class through an object.
private
can only be accessed by the methods of their own class
private features
a subclass has no access to
private fields of its superclass
______ are not inherited
private members
four levels of controlling access to fields
public access, private access, protected access, package access
overriding
redefining a method in a subclass when we want a method in the child class to behave differently than in its parent class
In Java, every class that does not specifically extend another class extends this
the class Obect
==
the equals method of the Object class does the same thing as
inheritance
the process of deriving one class from another.
What happens if you omit the superclass constructor call?
the superclass constructor with no arguments is called
Via inheritance, the new class contains the _____ and the ______ of the original class.
variables, methods
What is the keyword used to refer to member of base class from a sub class?
"super" (used to refer to its immediate superclass)
tests whether two references are to the same object
== method
Class
A blueprint for an object.
any
A variable of type Object can reference ___ object
What is the significance of the Object class?
All classes in Java are derived, directly or indirectly, from the Object class. Therefore, all public methods of the Object class, such as equals and toString, are available to every object.
False
An interface reference can refer to one object of any class that implements the interface (T/F).
Multiple Inheritance
Child is derived from multiple classes.
What relationship should every class derivation represent?
Each inheritance derivation should represent an is-a relationship: the child is-a more specific version of the parent. If this relationship does not hold, then inheritance is being used improperly.
No visibility issues when dealing with inheritance between ________.
Interfaces.
Single inheritance
Java's approach to inheritance is called...
Software Reuse
One purpose of inheritance.
Subclasses can _________ methods defined in a superclass.
Override
Abstract Class
Represents a concept on which other classes can build their definitions.
Siblings
The children of the same parent class.
multiple
a class can extend just one parent class, but can have ___- interfaces
things you can do to methods in a subclass
override, inherit, define new
The default access modifier is ______
package-private
IS-A Relationship : extends keyword is used to achieve inheritance. - Example
public class Animal { } public class Mammal extends Animal { } public class Reptile extends Animal { } public class Dog extends Mammal { }
can be accessed by methods of all classes
public features
super keyword
refers to the parent's class
If you want your toString method to be usable by a subclass
return getClass().getName() + desired print info
interface
set of requirements for a class
An abstract method only has a method ______
signature
Denotes inheritance
solid line with hollow triangle tip
can be converted into superclass references
subclass references
method call are always determined by ...
the type of the actual object
How do you get around a method parameter (default: object) not knowing anything about the actual object it's being compared to? (for the equals method)
you need to cast it to make it read the right parameter variables
all
you should use an abstract class when you don't want to implement ___ the methods for a class that's going to be used as a super class
What does the protected access class modifier do?
Allows subclasses to have access to superclass data member and methods marked as such.
False
An abstract class can be declared 'static' (T/F).
True
An abstract class cannot be instantiated (T/F).
What is the role of an abstract class?
An abstract class is a representation of a general concept. Common characteristics and method signatures can be defined in an abstract class so that they are inherited by child classes derived from it.
shadow variable
An instance variable defined in a derived class that has the same name as a variable in the parent class.
True
An interface name can be used to declare an object reference variable (T/F).
Protected Visibility
Any class in the same package or any class derived can reference it (public would violate encapsulation). Provides the best possible encapsulation that permits inheritance.
The bad way and the better way to write toString methods:
BAD WAY: public class BankAccount { ... public String toString() { return "BankAccount[balance=" + balance + "]"; } } public String toString() } . { } return getClass().getName() + "[balance=" + balance + "]"; The
How does inheritance support software reuse?
Because a new class can be derived from an existing class, the characteristics of the parent class can be reused without the error-prone process of copying and modifying code.
Why should you make data members private, even if a subclass needs to be able to modify it?
Because it allows filtration of the input and can make it cleaner.
Why should you never use == to compare the attributes of objects?
Because it compares whether or not two references point to the same object in memory, not if they're attributes are the same. equals() can be overridden. == cannot.
When overriding equals(), what must you do to the Object reference before using it to access attributes of the specific class instance you are passing to equals()?
Cast them - without casting, you can only access the 11 Object methods.
step 5 of equals
Compare all the fields of the class, depending on your definition of equals, using the equals method for objects.
step 3 of equals
Compare the classes using instanceof or getClass() depending on your definitions:
If your subclass tries to call an instance variable or method in the superclass that is private, what happens?
Compilation Error - cannot be inherited by the subclass and does not have access to it
Bind
Computers ... a method invocation to a method definition.
False
Constructors are usable in a child class (T/F).
True or False: A subclass cannot call the methods or fields of its *indirect* superclasses.
False. Just because it is an indirect inheritance doesn't mean that the subclass doesn't inherit its fields and methods.
True
If a child of an abstract class does not give a definition for every abstract class it inherits, it is also considered to be abstract (T/F).
no
If the call to the parent constructor is missing, the compiler will add one that calls the parent constructor with __ arguments.
False
If there are no current uses for them, do not override general methods such as 'toString' and 'equals' (T/F).
True
If two objects are equal according to the 'equals' method, then calling the 'hashCode' method on each should produce the same result (T/F).
Salesperson specific methods
In the example on top, even though emp actually points to a SalesPerson, the reference is of type Employee, so you can't use it to access _____ _____ _____ .
If you call the method of a superclass that the superclass itself inherited but did not implement, then the subclass will run the implementation in the _________ superclass.
Indirect
What does the "super" reference do?
It can be used to refer to superclass methods, and is used to refer to the superclass constructor.
Why is protected problematic?
It could put the integrity of information at risk because input rules can be surpassed.
True
It is bad to redefine inherited variables (T/F).
toString() can be overridden at multiple _______ to meet class implementations and outputs.
Levels
Inheritance
Making a new class from an existing one.
To override equals(), what must the reference type of the parameter be? What happens if that is not the same?
Object; equals() is overloaded rather than overridden.
descended
One way this is very useful is that I can write a method that acts on a parent class, and can send it any object that is ______ from that class.
superclass and base class
Other names for the parent of a subclass are ______ and ______ .
child, derived
Other names for the sub-class of a parent are ___ class and ___ class.
In order to concatenate an object and a string, without the result being messed up, what do you have to do?
Override the method and supply your own version -yields a string that describes the object's state
________ members are inherited by the child class, but cannot be referenced directly by name. may be used indirectly by calling methods.
Private.
Polymorphism
Provides a means to create versatility in our software.
overriding
Redefining a method that has been inherited from a parent class.
By default, what does toString() return?
Reference information about the instance of the class that you are using the method on.
compiler error
SalesPerson sp = new SalesPerson(...); Employee emp = sp; // legal because a SalesPerson is an Employee SalesPerson sp2 = emp; // what does the last statement generate?
commission
Salespeople are employees, so they share all the qualities of employees, but they also make _____ which other employees don't
False
Sibling classes are related by inheritance (T/F).
What useful String method can be used when returning a String in toString()?
String.format().
public, private
The child class can use the ... variables, but not the ... variables of the parent class.
polymorphism
The fact an object variable can refer to objects of different types is called _______.
How can the final modifier be used to restrict inheritance?
The final modifier can be applied to a particular method, which keeps that method from being overridden in a child class. It can also be applied to an entire class, which keeps that class from being extended at all.
Unlimited
The number of children a class can have/the number of levels there can be in a class hierarchy:
What does the protected modifier accomplish?
The protected modifier establishes a visibility level (such as public and private) that takes inheritance into account. A variable or method declared with protected visibility can be referenced by name in the derived class, while retaining some level of encapsulation. Protected visibility allows access from any class in the same package.
is-a
The relationship between a child and parent class.
is-a relationship
The relationship between two classes related by inheritance. The superclass is-a more specific version of the subclass.
Super
The reserved word that can be used in a class to refer it to its parent class.
Extends
The reserved word that indicates that a new class is being created from the original class.
Why is the super reference important to a child class?
The super reference can be used to call the parent's constructor, which cannot be invoked directly by name. It can also be used to invoke the parent's version of an overridden method.
only
This does not work the other way. An Employee object can't call methods defined _____ in Salesperson.
doesn't
This will cause an error if the parent class ______ have a constructor with no arguments defined.
Siblings
Two child classes of the same parent.
Inheritance and Interfaces
Two ways to create polymorphic references:
hashCode
Uniquely identify each commit.
Interfaces
Use ... to create a class that serves multiple roles.
inherits
We don't need to declare name and salary in the Salesperson class because it ______ them from its parent.
new
We don't want to rewrite all the employee information for the ___ class, so we make Salesperson a subclass of Employee.
Example of Polymorphism
When a superclass reference is expected (the method is presentQuestion(Question q) and a subclass reference is passed in -- presentQuestion(ChoiceQuestion cq)
The Principle of Encapsulation
When variables of the parent class are declared public so that the child class can access them, the ... is violated.
When do you use "super"
When you're writing a method in the subcass that needs to directly call the method inside the superclass (ex. if you're calling method display, inside display in the subclass, you need to reference the superclass so that it's not calling itself over and over." Super is NOT an object refernece
What is the difference between single inheritance and multiple inheritance?
With single inheritance, a class is derived from only one parent, whereas with multiple inheritance, a class can be derived from multiple parents, inheriting the properties of each. The problem with multiple inheritance is that collisions must be resolved in the cases when two or more parents contribute an attribute or method with the same name. Java supports only single inheritance.
inherited class type
You can use a cast to tell the compiler a class reference is really an _____
What are one of the limitations of using abstract methods?
You cannot construct objects of classes with abstract methods. For example, once the Account class has an abstract method, the compiler will flag an attempt to create a new Account() as an error.
unrelated
You cannot use a cast to try to cast _____ types
not
You may ____ assign a parent object to a reference to its child.
reference
You may assign a child object to a _____ to its parent
BankAccount acct = new Checking(); How would you turn acct into a Checking object?
You would have to cast acct (which is a BankAccount reference) into an actual Checking object to use Checking specific methods Checking chAcct = (Checking) acct;
concrete class
a class for which you can create an object (basically anything that isn't abstract)
abstract class
a class for which you cannot create an object
base class
a class from which another is derived. Also called a parent class or super class.
parent class
a class from which another is derived. Also called a superclass or base class.
An ______ cannot be instantiated
abstract class
class for which you cannot create obects
abstract class
how do abstract classes differ from interfaces
abstract classes can have instance fields and they can have concrete methods and constructors
What is a drawback of protected variables?
accessible by subclasses AND by other classes in the same package (i.e. not that protected)
BankAccount acct = new Checking(); what is the object reference what is the object what methods can you call on these?
acct is a BankAccount reference to a (new) Checking object -can only call BankAccount methods on "acct"
public
all methods in an interface are automatically ___
instantiated
an interface cannot be
implement
an interface gives a list of methods that the class must ___ to satisfy the interface
instanceOf will return true if:
an object can be cast to the new Type
instanceOf is a what...
an operator (not a method) **DOES NOT OPERATE ON NUMBERS
Abstract Class
cannot be instantiated, usually contains one or more abstract methods, but can contain methods that aren't abstract, and can make data declarations.
when you call the clone method you must use a
cast ex. BankAccount clonedAccount = (BankAccount) account.clone();
how to wrtie equals method
cast the otherObject parameter to the type of your class, and then compare the fields of the implicit parameter and the other parameter
inheritance chain
casting a reference to an object down in the ____ will cause a compiler error
When overriding a method, you are not allowed to
change the type of parameter variable
equals Method
checks whether two objects have the same CONTENTS differs from == operators, which only checks if the two references are referring to the asme object
a class which you can create objects for
concrete class
Object clone()
creates a returns a copy of this object
makes it so that no one can extend the class
declaring the class final (you can also declare methods as final so that they can't be overridden)
a type with a finite number of values
enumerated type (enum)
tests whether two objects have the same contents
equals method
Object
every class in Java is a descendent of the ___ class
Classes use ______in the header to create child classes.
extends
Subclasses inherit all
fields from the superclass
A ____ class cannot be extended at all.
final
A child class cannot override a ______ method.
final
The ______ modifier can be used to restrict inheritance.
final
inheriting methods
if you do not explicitly override a superclass method you automatically inherit it; the superclass methods can be applied to the subclass obects
You can never override
instance fields
An Interface cannot be ______
instantiated
Relationship between parent and child class
is-a
What happens if you try to extend more than one class to a subclass?
it won't work and you'll get a compile time error
An Interface consists solely of ______
method signatures
must be defined in the subclass
new methods and instance fields
The _____ that is used to invoke the method determines which version of the method is executed.
object
protected access
object that can be accessed by the methods of the object's class and all its subclasses Access is restricted to the containing class and to any class that is derived directly or indirectly from the containing class
methods, constructors
only _____ and ___ constructors can be declared abstract
A child class can ______ the parent's definition of an inherited class.
override
A class derived from an abstract parent must _______ all of it's parent's abstract methods.
override , or the derived class will also be considered abstract.
private members cannot be ______
overriden
all methods of classes in the same package can access the feature
package access
the default access when no access modifier is given
package access
How do you cast an object?
public boolean equals(Object otherObject) { Stamp other = (Stamp) otherObject; return color.equals(other.color) && value == other.value; }
more specialized class that inherits from the superclass
subclass
Any new instance fields that you define in the subclass are present only in
subclass objects
use this keyword to call a method of the superclass
super ex. super.deposit(amount);
constructor
super can be used to call the _____ of the class
How do you call upon the constructor of a superclass?
super();
more general class that forms the basis for inheritance
superclass
instanceOf
tests whether an object belongs to a particular type
instanceof operator
tests whether an object belongs to a particular type
first
the call using super must be the ____ statement in the constructor
in enumeration classes, the clone method returns
the given object WITHOUT making a copy
class hierarchy
the hierarchy formed by inheritance among multiple classes.
If you define a method that does not exist in the superclass then,
the new method can only be applied to subclass obects
What happens if a subclass extends an abstract superclass?
the subclass is not itself abstract and can implement the abstract method -overrides the abstract methods
What happens when you concatenate a string with an object?
the toString method is called. Example "box=" + box; becomes "box=java.awt.Rectangle[x=5,y=10,width=20,height=30]" **DOES NOT WORK W NUMBERS bc they're not objects
method calls are always determined by
the type of the actual object (it doesn't matter if the object reference is stored in a different field type)
dynamic method lookup
the virtual machine calls an instance method, and it located the method of the implicit parameter's class
The instanceof Keyword
to check determine whether Mammal is actually an Animal, and dog is actually an Animal.
What are the general methods defined in the (automatically extended) class Object?
toString equals hashCode
The _______ and _______ methods are inherited by every class in every Java program.
toString, equals
calling a superclass constructor
use the super keyword in the first statement of the subclass constructor super(initialBalance)
Super Reference
used in a class to refer to it's parent class. can invoke parent's constructor. can also be used to reference parent's variables and methods.
IS-A Relationship : implements keyword
used with classes to inherit the properties of an interface. Interfaces can never be extended by a class.
implements
what keyword do you use for interfaces
when you do not have access to private fields
when do you need to call the constructor of the parent class?
instanceof, cast
when trying to call child class specific methods on a group of child and parent objects, you should use ____ then ___
Is it legal to store a subclass reference in a superclass variable? like such: Question q = cq;
yes
define the toString method to
yield a string that describes the object state
interface
you can have reference variables with ___ types
why would someone use a "final" method / class?
you can prevent other programmers from creating subclasses or from overriding certain methods -- no one can extend 'data type'. When you have a reference of type String, it must contain a string object and never an object of a subclass
What do you do when you need to convert a superclass reference to a subclass reference?
you cast it, but in order to protect against bad casts, you need to use "instanceOf"
salespeople
you have an employee class and you want to have a special class for employees who are ______.
reference variable
you may have an abstract class _____
If you're trying to use the "equals" method, and comparing two objects, you will get an error if you enter one object type and another entry that is not the object type. How do you prevent this?
you test whether the two objects belong to the same class use if statement if (getClass() != otherObject.getClass()) { return false; }
is a
• Informally, a subclass satisfies the _____ criteria. A salesperson _____ employee.
salesperson, parent
• Suppose now we have a reference to a Salesperson object: SalesPerson p = . . . • We can call any method defined in ______: double r = p.getRate(); // Salesperson method returns rate • Or any method from the _____ class:
subclass - inherit
-A subclass inherits all the members (fields, methods, and nested classes) from its superclass. -Constructors are not members, so they are not inherited by subclasses -the constructor of the superclass can be invoked from the subclass.
@Override is used to ________?
Declare that a superclass method is being overriden. It is optional, and placed directly above the method that is doing the overriding. It is also a safety mechanism and will return an error if no superclass method exists in the same format as the overridden method.
True or False: In Java, you can only have one layer of inheritance, but you can use multiple class inheritance.
False - Java inheritance can be multilayered, but is unfortunately only single inheritance.
The .toString() method is defined on the ______ class
Object
An ______ does not have a body
abstract method
______ cannot be overriden
static methods
super : differentiating the Members
If a class is inheriting the properties of another class. And if the members of the superclass have the names same as the sub class, to differentiate these variables we use super keyword as shown below. super.variable super.method();
If a method that you are attempting to override doesn't have the same access modifier, name, return type, and parameters, than you __________ the method instead of overriding it.
Overload
______ is when a subclass redefines a method of it's parent class
Overriding
A private member of a class is visible only to ______
The defining class
How do you use inheritance in a class?
Use the extends keyword after the class name: public class Car extends Vehicle
An ______ only has a method signature
abstract method
public & private are examples of...
access modifiers
A class ______ extend multiple classes
cannot
Invoking Superclass Constructor : Invoking Superclass Constructor
class Superclass { int age; Superclass(int age) { this.age = age; } public void getAge() { System.out.println("The value of the variable named age in super class is: " +age); } } public class Subclass extends Superclass { Subclass(int age) { super(age); } public static void main(String argd[]) { Subclass s = new Subclass(24); s.getAge(); } }
The .equals() method compares the ______ in objects
data
In Java 8, an interface can contain method bodies if it uses the ______ keyword
default
A public member of a class is visible to ______
everything
In Java, a class can ______ up to one other class to inherit from it
extend
Abstract classes can be ______ by other classes or abstract classes
extended
Interfaces can be ______ by other interfaces
extended
The keyword use to inherit an abstract class is...
extends
The keyword used to inherit a class is...
extends
a class can implement one or more interfaces
helped Java get rid of the impossibility of multiple inheritance.
The ______ operator can be used to return a boolean indicating if the first argument is a type equal to the second argument
instanceof
The instanceof Keyword : Example
interface Animal{} class Mammal implements Animal{} public class Dog extends Mammal { public static void main(String args[]) { Mammal m = new Mammal(); Dog d = new Dog(); System.out.println(m instanceof Animal); System.out.println(d instanceof Mammal); System.out.println(d instanceof Animal); } } output : true true true
IS-A Relationship
is a way of saying: -This object is a type of that object
Inheritance is a mechanism in which one class can inherit the fields and ______ of another "parent" class
methods
A package-private member of a class is visible to the class and to other classes in the same ______
package
A protected member of a class is visible to members of the same ______
package
Inheritance is a mechanism in which one class can inherit the fields and methods of another "______" class
parent
single inheritance B -> A
public class A { ..... } public class B extends A { ..... }
hierarchical inheritance: B ->A C->A
public class A { ..... } public class B extends A { ..... } public class C extends A { ..... }
multi level inheritance C -> B -> A
public class A { ..... } public class B extends A { ..... } public class C extends B { ..... }
multiple inheritance C ->A C->B
public class A { ..... } public class B { ..... } public class C extends A,B{ ...} ***A very important fact to remember is that Java does not support multiple inheritance. This means that a class cannot extend more than one class.
HAS-A relationship : example
public class Vehicle{} public class Speed{} public class Van extends Vehicle { private Speed sp; } This shows that class Van HAS-A Speed. By having a separate class for Speed, we do not have to put the entire code that belongs to speed inside the Van class, which makes it possible to reuse the Speed class in multiple applications.
IS-A Relationship : implements keyword - Example
public interface Animal { } public class Mammal implements Animal { } public class Dog extends Mammal { }
Types of Inheritance
single inheritance multi level inheritance hierarchical inheritance multiple inheritance
A protected member of a class is visible to ______
subclasses
To call the constructor of a parent class, you must use the ______ keyword
super
IS-A Relationship : extends keyword
the subclasses will be able to inherit all the properties of the superclass except for the private properties of the superclass.
Why do we use inheritance?
-Minimizes redundant code for common traits -Changes in code have to be made once and is passed onto all classes that inherit that code. -Makes similar classes less disjointed by giving them a foundation of similar code -Leads to less time spent coding, less code, easier debugging, and easier re-usability of code
subclass
-The class which inherits the properties of other -(derived class, child class)
Invoking Superclass Constructor
-f a class is inheriting the properties of another class, the subclass automatically acquires the default constructor of the superclass. -But if you want to call a parameterized constructor of the superclass, you need to use the super keyword as shown below. super(values);
super
-similar to this keyword Following are the scenarios where the super keyword is used. -used to differentiate the members of superclass from the members of subclass, if they have same names. -used to invoke the superclass constructor from subclass.
Data members define a _______ relationship with the class they are defined in.
HAS-A
In Java, aggregation is a _____ relationship, and is the use of a reference type inside of a class.
HAS-A Ex. If Employee has a reference to Address, then Employee HAS-A Address.
Inheritance uses a ______ relationship.
IS-A
What is the difference between an is-a and a has-a relationship?
IS-A: defines that a class IS another class HAS-A: defines that a class HAS an attribute
What is single inheritance and how does it differ from multiple inheritance?
In single inheritance, a child class can only have one *direct* superclass; in multiple inheritance, a child class can have multiple *direct* superclasses.
What does single-inheritance do in Java?
It solves ambiguity problems - the most direct superclass is used when a identifier name is ambiguous.
If no direct superclass is specified, than a class will inherit from the __________ class by default.
Object
The .hashCode() method is defined on the ______ class
Object
equals() can/should be overridden because it compares objects by default instead of object attributes.
SHOULD
What is inheritance?
The action of taking methods and fields from a parent class and allowing a child or subclass to inherit and use those methods and fields through an IS-A relationship between the parent child.
What is the difference between a superclass and a subclass?
The superclass is a generalized class containing all methods and fields in common in its child classes. The subclass is the child class that adds methods and fields that are unique to it.
What does the default Object implementation of equals() compare?
Whether or not two references point to the same object in memory.
An abstract method does not have a ______
body
Inheritance
the process where one class acquires the properties (methods and fields) of another. -manageable in a hierarchical order.