240 likes | 255 Views
Understand inheritance, subclasses, polymorphism, and abstract classes in object-oriented design. Learn how to use modifiers and access controls effectively. Build class hierarchies and derive subclasses for optimal design. Discover the power of polymorphism and inheritance relationships. Explore the use of abstract classes for implementation independence. Enhance your Java programming skills with real-world examples.
E N D
9. Inheritance 9.1 Subclasses 9.2 Polymorphism 9.3 Abstract Classes 9.4 Modifiers and Access 9.6 Object-Oriented Design with Use Cases and Scenarios
Objectives • Use inheritance to relate classes • Use polymorphism to improve design • Use abstract classes to achieve implementation independence • Understand the use of modifiers in specifying access • Develop an object-oriented design from use cases and scenarios
Subclasses • Inheritance allows deriving a new class from an existing one • The existing class is called the parent class, or superclass, or base class • The derived class is called the child class or subclass • The child class inherits characteristics: data and methods, of the parent • Java only support single inheritance
Vehicle Car Subclasses • The inheritance (child-parent) relationships are often shown graphically in a class diagram like • Inheritance exhibits an is-a relationship, meaning the child is a more specific version of the parent
Class Hierarchies • Inheritance relationships create hierarchy of classes • Two children of the same parent are called siblings • An inherited member is continually passed down the line • Class hierarchies often have to be extended and modified to keep up with changing needs
Deriving Subclasses • To create a subclass, we extend a class, inheriting all the attributes and behavior of that class public class Car extends Vehicle { // class contents } • The keyword extends tells us that Car is a subclass of the superclass Vehicle • A subclass usually have data and methods defined in addition to the ones inherited
Deriving Subclasses • Words.java (extra) Book.java (extra) Dictionary.java (extra) • BankAccount.java SavingAccount.java UseSavingAccount.java CheckingAccount.java UseCheckingAccount.java
Deriving Subclasses • A child class inherits the public methods of its parent, but it may choose to override some of them to implement its own specific behavior Messages.java (extra) Thought.java (extra) Advice.java (extra) • Overloading - multiple methods in the same class with the same name but different signatures • Overriding - two methods of the same name, one in a parent class and one in a child class, that have the same signature
Reference and Inheritance • An object reference can refer to an object of its class, or to an object of any class related to it by inheritance • For example, if the Christmas is a subclass of the Holiday class, then a Holiday reference can be used to point to a Christmas object Holiday day; day = new Christmas();
The Keyword super • Constructors are not inherited, even though they are publicly visible • Java uses the keyword super to reference the superclass, it is often used to invoked the parent’s constructor • Words2.java (extra) Book2.java (extra) Dictionary2.java (extra)
Polymorphism • Polymorphism - “many forms” • A polymorphic reference is one which can refer to different types of objects at different times • A reference to the superclass can actually refer to an object in any subclass • An interface can also be used to create polymorphic reference • An object reference variable has • Compile-time type - the variable’s declared type • Run-time type - the type of the object to which the variable currently refers
Polymorphism • Compile-time vs. run-time types Animal herman; // compile-time type Animal Animal zelda; // compile-time type Animal herman = new Lion(); // run-time type Lion zelda = new Giraffe(); // run-time type Giraffe Animal[] two = {herman, zelda}; feed(two); where public void feed(Animal[] theZoo) { for (int i = 0; i < theZoo.length; i++) theZoo[i].eat(); }
Polymorphism • Animal.java Lion.java Giraffe.java UseAnimals.java • Duck.java UseNewAnimals.java • Withdraw.java
Abstract Classes • An abstract class is a placeholder in a class hierarchy that represents a generic concept • An abstract class cannot be instantiate • We use the modifier abstract on the class header to declare a class as abstract • An abstract class often contains abstract methods (like an interface does), though it doesn’t have to • The child of an abstract class must override the abstract methods of the parent, or it too will be considered abstract
Abstract Classes • The keyword final - Specify that a method cannot be overridden • An Abstract method cannot be defined as final or static • The use of abstract classes is a design decision; it helps us establish common elements in a class that is too general to instantiate • Polymorphism often works with abstract classes • Operations of an abstract class will work for objects of any subclass
A Shape Classes • Shape is an abstract concept • Shape has subclass like Line, Circle, etc. that have instances • Shape.java • Line.java • Circle.java • UseShape.java
Package • A java package corresponds to a directory in the directory structure of the host machine • To put a class in a named package, use a package statement as the first statement in the file • For example: package personData; • The compiled byte code file (.class) must be placed under the directory with the same name of the package • An import statement tells Java to look in the directory for classes referenced in the program
Package • Using import statement, we can ommit the package prefix of the classes • In addition to the default directories that Java will automatically search, the • classpath enviroment variable specifies user-defined directories to search • For example: javac -classpath .;c:\booklr Test.java java -classpath .;c:\booklr Test
Modifiers and Access • public - anywhere the class name is accessible • protected - in the package that contains the class in which the member is declared, and in any subclass of that class • (no modifier) - in the package that contains the class in which the member is declared • private - only in the class in which the member is declared • The visibility package: A.java, B.java, C.java, D.java
OO Design • Understand the problem • Solve the problem by identifying objects • Each object provides certain services • Objects use each other's services • A use case defines one function that the system should provide • For each case, several scenarios to describe the interaction among the user and • other parts of the system to provide the function
OO Design Example • Problem - Simple automatic teller machine • Use cases • deposit • withdrawal • get balance • Several scenarios for each use case • at least one for success • several for failure • AtmScreen.java
A Success Scenario for Deposit • The user asks the teller to accept an ATM card • The teller asks the user to enter a PIN • The user asks the teller to accept a PIN • The teller asks the user to select a transaction type • The user asks the teller to accept a deposit • The teller asks the user to select an account type • The user asks the teller to accept a saving account type • The teller asks the bank to find the account of the chosen type for the user with the specified PIN • The bank gives the teller a reference to the account
A Success Scenario for Deposit • The teller asks the user to specify an amount • The user asks the teller to accept an amount • The teller asks the account to de[posit the specified amount • The teller asks the user to select another transaction
A Failure Scenario • The user asks the teller to accept an ATM card • The teller asks the user to enter a PIN • The user asks the teller to accept a PIN • The teller asks the user to select a transaction type • The user asks the teller to accept a get balance transaction type • The teller asks the user to select an account type • The user asks the teller to accept a checking account type • The teller asks the bank to find the account of the chosen type for the user with the specified PIN • The bank gives the teller a null account • The teller asks the user to select another transaction, ...