SlideShare a Scribd company logo
OBJECT ORIENTED PROGRAMMING
INDEX  UNIT 3 PPT SLIDES S.NO.  TOPIC    LECTURE NO.    PPTSLIDES Hierarchical abstractions    L1   L1.1TO L1.9  Base class object.    subclass, subtype, substitutability.  L2   L2.1 TO L2.8 forms of inheritance- specialization,    L3   L3.1 TO L3.5 specification.  construction, extension, limitation,    L4   L4.1 TO L4.9 combination.  Benefits of inheritance, costs of inheritance.   L5  L5.1 TO 5.4 Member access rules, super uses,    L6  L6.1 TO 6.17 using final with inheritance. 7 polymorphism- method overriding,   L7   L7.1 TO 7.11   abstract classes.
Hierarchical Abstraction An essential element of object-oriented programming is  abstraction.  Humans manage complexity through abstraction. For example, people do not think of a car as a set of tens of thousands of individual parts. They think of it as a well-defined object with its own unique behavior.  This abstraction allows people to use a car without being overwhelmed by the complexity of the parts that form the car. They can ignore the details of how the engine, transmission, and braking systems work.  Instead they are free to utilize the object as a whole.
Class Hierarchy A child class of one parent can be the parent of another child, forming  class hierarchies Animal Reptile Bird Mammal Snake Lizard Bat Horse Parrot At the top of the hierarchy there’s a default class called  Object .
Class Hierarchy Good class design puts all common features as high in the hierarchy as reasonable The class hierarchy determines how methods are executed inheritance is transitive An instance of class Parrot is also an instance of Bird, an instance of Animal, …, and an instance of class Object
Base Class  Object In Java, all classes use inheritance.  If no parent class is specified explicitly, the base class  Object  is implicitly inherited. All classes defined in Java, is a child of  Object  class, which provides minimal functionality guaranteed to e common to all objects.
Base Class  Object (cont) Methods defined in Object class are; equals(Object obj)  Determine whether the argument object  is the same as the receiver. getClass()  Returns the class of the receiver, an object of type Class. hashCode()  Returns a hash value for this object. Should be overridden when the equals method is changed. toString()  Converts object into a string value. This method is also often overridden.
Base class 1) a class obtains variables and methods from another class 2) the former is called subclass, the latter super-class (Base class) 3) a sub-class provides a specialized behavior with respect to its super-class 4) inheritance facilitates code reuse and avoids duplication of data
One of the pillars of object-orientation. A new class is derived from an existing class: 1) existing class is called super-class 2) derived class is called sub-class A sub-class is a specialized version of its super-class: 1) has all non-private members of its  super-class 2) may provide its own implementation of  super-class methods Objects of a sub-class are a special kind of objects of a super-class.
extends Is a keyword used to inherit a class from another class Allows to extend from only one class class One { int a=5; } class Two extends One { int b=10; }
One baseobj ;// base class object. super class object  baseobj  can be used to refer its sub class objects. For example,  Two subobj=new Two; Baseobj=subobj  // now its pointing to sub class
Subclass, Subtype and Substitutability A subtype is a class that satisfies the principle of substitutability. A subclass is something constructed using inheritance, whether or not it satisfies the principle of substitutability.  The two concepts are independent. Not all subclasses are subtypes, and (at least in some languages) you can construct subtypes that are not subclasses.
Subclass, Subtype, and Substitutability Substitutability is fundamental to many of the powerful software development techniques in OOP. The idea is that, declared a variable in one type may hold the value of different type. Substitutability can occur through use of inheritance, whether using  extends , or using  implements  keywords.
Subclass, Subtype, and Substitutability When new classes are constructed using inheritance, the argument used to justify the validity of substitutability is as follows; Instances of the subclass must possess all data fields associated with its parent class. Instances of the subclass must implement, through inheritance at least, all functionality defined for parent class. (Defining new methods is not important for the argument.) Thus, an instance of a child class can mimic the behavior of the parent class and should be  indistinguishable  from an instance of parent class if substituted in a similar situation .
Subclass, Subtype, and Substitutability The term  subtype  is used to describe the relationship between types that explicitly recognizes the principle of  substitution . A type B is considered to be a subtype of A if an instances of B can legally be assigned to a variable declared as of type A. The term  subclass  refers to inheritance mechanism made by extends keyword. Not all  subclasses  are  subtypes .  Subtypes  can also be formed using  interface , linking types that have no inheritance relationship.
Subclass Methods allows to reuse a sequence of statements Inheritance  allows to reuse classes by 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 . As the name implies, the child inherits characteristics of the parent(i.e the child class  inherits  the methods and data defined for the parent class
Subtype  Inheritance relationships are often shown graphically in a  class diagram , with the arrow pointing to the parent class + fly() : void Animal weight : int + getWeight() : int Bird
Substitutability (Deriving Subclasses) In Java, we use the reserved word  extends  to establish an inheritance relationship   class Animal {   // class contents   int weight; public void int getWeight() {…} } class Bird extends Animal {   // class contents public void fly() {…}; }
Defining Methods in the Child Class: Overriding by Replacement A child class can  override  the definition of an inherited method in favor of its own that is, a child can redefine a method that it inherits from its parent the new method must have the same signature as the parent's method, but can have different code in the body In java, all methods except of constructors override the methods of their ancestor class by replacement.  E.g.: the Animal class has method eat() the Bird class has method eat() and Bird extends Animal variable  b  is of class Bird, i.e. Bird b = … b.eat() simply invokes the eat() method of the Bird class If a method is declared with the  final  modifier, it cannot be overridden
Forms of Inheritance Inheritance is  used  in a variety of way and  for a variety of different purposes  .  Inheritance for Specialization Inheritance for Specification Inheritance for Construction Inheritance for Extension Inheritance for Limitation Inheritance for Combination One or many of these forms may occur in a single case.
Forms of Inheritance (-  Inheritance for Specialization  - ) Most commonly used inheritance and sub classification is for specialization. Always creates a subtype, and the principles of substitutability is explicitly upheld. It is the most ideal form of inheritance.  An example of subclassification for specialization is; public class PinBallGame extends Frame { // body of class }
Specialization By far the most common form of inheritance is for specialization.  Child class is a specialized form of parent class Principle of substitutability holds A good example is the Java hierarchy of Graphical components in the AWT:  Component  Label  Button  TextComponent  TextArea  TextField  CheckBox  ScrollBar
Forms of Inheritance (-  Inheritance for Specification  - ) This is another most common use of inheritance. Two different mechanisms are provided by Java,  interface  and  abstract , to make use of  subclassification for specification . Subtype is formed and substitutability is explicitly upheld. Mostly, not used for refinement of its parent class, but instead is used for definitions of the properties provided by its parent.  class FireButtonListener implements ActionListener { // body of class } class B extends A { // class A is defined as abstract specification class }
Specification The next most common form of inheritance involves specification. The parent class specifies some behavior, but does not implement the behavior   Child class implements the behavior Similar to Java interface or abstract class When parent class does not implement actual behavior but merely defines the behavior that will be implemented in child classes Example, Java 1.1 Event Listeners:  ActionListener, MouseListener, and so on specify  behavior, but must be subclassed.
Forms of Inheritance (-  Inheritance for Construction  - ) Child class inherits most of its functionality from parent, but may change the name or parameters of methods inherited from parent class to form its interface. This type of inheritance is also widely used for code reuse purposes. It simplifies the construction of newly formed abstraction but is not a form of subtype, and often violates substitutability. Example is  Stack  class defined in Java libraries .
Construction The parent class is used only for its behavior, the child class has no  is-a  relationship to the parent. Child modify the arguments or names of methods  An example might be subclassing the idea of a  Set  from an existing  List  class.  Child class is not a more specialized form of parent class; no substitutability
Forms of Inheritance (-  Inheritance for Extension  - ) Subclassification for extension occurs when a child class only adds new behavior to the parent class and does not modify or alter any of the inherited attributes. Such subclasses are always subtypes, and substitutability can be used. Example of this type of inheritance is done in the definition of the class  Properties  which is an extension of the class  HashTable .
Generalization or Extension The child class generalizes or extends the parent class by providing more functionality In some sense, opposite of subclassing for specialization  The child doesn't change anything inherited from the parent, it simply adds new features Often used when we cannot modify existing base parent class Example, ColoredWindow inheriting from Window Add additional data fields Override window display methods
Forms of Inheritance (-  Inheritance for Limitation  - ) Subclassification for limitation occurs when the behavior of the subclass is smaller or more restrictive that the behavior of its parent class.  Like subclassification for extension, this form of inheritance occurs most frequently when a programmer is building on a base of existing classes. Is not a subtype, and substitutability is not proper.
Limitation The child class limits some of the behavior of the parent class.  Example, you have an existing List data type, and you want a Stack  Inherit from List, but override the methods that allow access to elements other than top so as to produce errors.
Forms of Inheritance (-  Inheritance for Combination  - ) This types of inheritance is known as  multiple inheritance  in Object Oriented Programming.  Although the Java does not permit a subclass to be formed be inheritance from more than one parent class, several approximations to the concept are possible. Example of this type is  Hole  class defined as; class  Hole extends Ball implements PinBallTarget{ // body of class }
Combimnation Two or more classes that seem to be related, but its not clear who should be the parent and who should be the child.  Example: Mouse and TouchPad and JoyStick  Better solution, abstract out common parts to new parent class, and use subclassing for specialization.
Summary of Forms of Inheritance Specialization. The child class is a special case of the parent class; in other words, the child class is a subtype of the parent class.  Specification. The parent class defines behavior that is implemented in the child class but not in the parent class.  Construction. The child class makes use of the behavior provided by the parent class, but is not a subtype of the parent class.  Generalization. The child class modifies or overrides some of the methods of the parent class.  Extension. The child class adds new functionality to the parent class, but does not change any inherited behavior.  Limitation. The child class restricts the use of some of the behavior inherited from the parent class.  Variance. The child class and parent class are variants of each other, and the class-subclass relationship is arbitrary.  Combination. The child class inherits features from more than one parent class. This is multiple inheritance and will be the subject of a later chapter.
The Benefits of Inheritance Software Reusability (among projects)  Increased Reliability (resulting from reuse and sharing of well-tested code)  Code Sharing (within a project)  Consistency of Interface (among related objects)  Software Components Rapid Prototyping (quickly assemble from pre-existing components)  Polymorphism and Frameworks (high-level reusable components)  Information Hiding
The Costs of Inheritance Execution Speed Program Size Message-Passing Overhead Program Complexity (in overuse of inheritance)
Types of inheritance   Acquiring the properties of an existing Object into newly creating Object to overcome the redeclaration of properties in deferent classes. These are 3 types: 1.Simple Inheritance SUB SUPER SUB 1 SUB 2 extends extends SUPER
2 .   Multi Level Inheritance 3.  Multiple Inheritance SUPER SUB SUB SUB SUPER 1 SUPER 2 extends extends implements SUB SUPER 1 SUPER 2 implements SUB extends
Member access rules Visibility modifiers determine which class members are accessible and which do not Members (variables and methods) declared with  public  visibility are accessible, and those with  private  visibility are not  Problem: How to make class/instance variables visible only to its subclasses? Solution: Java provides a third visibility modifier that helps in inheritance situations:  protected
Modifiers and Inheritance  (cont.) Visibility Modifiers for class/interface: public  : can be accessed from outside the class definition. protected  : can be accessed only within the class definition in which it appears, within other classess in the same package, or within the definition of subclassess. private  : can be accessed only within the class definition in which it appears. default-access (if omitted)  features accessible from inside the current Java  package
The  protected  Modifier The  protected  visibility modifier allows a member of a base class to be accessed in the child protected  visibility provides more encapsulation than  public  does protected  visibility is not as tightly encapsulated as  private  visibility Dictionary + getDefinitions() : int + setDefinitions():  void + computeRatios() : double  Book protected int pages + getPages() : int + setPages(): void
Example: Super-Class class A { int i; void showi() { System.out.println("i: " + i); } }
Example: Sub-Class class B extends A { int j; void showj() { System.out.println(“j: " + j); } void sum() { System.out.println("i+j: " + (i+j)); } }
Example: Testing Class class SimpleInheritance { public static void main(String args[]) { A a = new A(); B b = new B(); a.i = 10; System.out.println("Contents of a: "); a.showi(); b.i = 7; b.j = 8; System.out.println("Contents of b: "); subOb.showi(); subOb.showj(); System.out.println("Sum of I and j in b:"); b.sum();}}
Multi-Level Class Hierarchy The basic Box class: class Box { private double width, height, depth; Box(double w, double h, double d) { width = w; height = h; depth = d; } Box(Box ob) { width = ob.width; height = ob.height; depth = ob.depth; } double volume() { return width * height * depth; } }
Multi-Level Class Hierarchy  Adding the weight variable to the Box class: class BoxWeight extends Box { double weight; BoxWeight(BoxWeight ob) { super(ob); weight = ob.weight; } BoxWeight(double w, double h, double d, double m) { super(w, h, d); weight = m; } }
Multi-Level Class Hierarchy Adding the cost variable to the BoxWeight class: class Ship extends BoxWeight { double cost; Ship(Ship ob) { super(ob); cost = ob.cost; } Ship(double w, double h, double d, double m, double c) { super(w, h, d, m); cost = c; }}
Multi-Level Class Hierarchy class DemoShip { public static void main(String args[]) { Ship ship1 = new Ship(10, 20, 15, 10, 3.41); Ship ship2 = new Ship(2, 3, 4, 0.76, 1.28); double vol; vol = ship1.volume(); System.out.println("Volume of ship1 is " + vol); System.out.print("Weight of ship1 is”); System.out.println(ship1.weight); System.out.print("Shipping cost: $"); System.out.println(ship1.cost);
Multi-Level Class Hierarchy vol = ship2.volume(); System.out.println("Volume of ship2 is " + vol); System.out.print("Weight of ship2 is “); System.out.println(ship2.weight); System.out.print("Shipping cost: $“); System.out.println(ship2.cost); } }
“ super ” uses ‘ super’ is a keyword used to refer to hidden variables of super class from sub class. super.a=a; It is used to call a constructor of super class from constructor of sub class which should be first statement. super(a,b); It is used to call a super class method from sub class method to avoid redundancy of code super.addNumbers(a, b);
Super and Hiding Why is super needed to access super-class members? When a sub-class declares the variables or methods with the same names and types as its super-class: class A { int i = 1; } class B extends A { int i = 2; System.out.println(“i is “ + i); } The re-declared variables/methods hide those of the super-class.
Example: Super and Hiding  class A { int i; } class B extends A { int i; B(int a, int b) { super.i = a; i = b; } void show() { System.out.println("i in superclass: " + super.i); System.out.println("i in subclass: " + i); } }
Example: Super and Hiding  Although the i variable in B hides the i variable in A, super allows access to the hidden variable of the super-class: class UseSuper { public static void main(String args[]) { B subOb = new B(1, 2); subOb.show(); } }
Using final with inheritance final keyword is used declare constants which can not change its value of definition. final Variables can not change its value. final Methods can not be Overridden or Over Loaded final Classes can not be extended or inherited
Preventing Overriding with final A method declared final cannot be overridden in any sub-class: class A { final void meth() { System.out.println("This is a final method."); } } This class declaration is illegal: class B extends A { void meth() { System.out.println("Illegal!"); } }
Preventing Inheritance with final A class declared final cannot be inherited – has no sub-classes. final class A { … } This class declaration is considered illegal: class B extends A { … } Declaring a class final implicitly declares all its methods final. It is illegal to declare a class as both abstract and final.
Polymorphism Polymorphism is one of three pillars of object-orientation. Polymorphism: many different (poly) forms of objects that share a common interface respond differently when a method of that interface is invoked: 1) a super-class defines the common interface 2) sub-classes have to follow this interface (inheritance), but are also permitted to provide their own implementations (overriding) A sub-class provides a specialized behaviors relying on the common elements defined by its super-class .
Polymorphism A polymorphic reference can refer to different types of objects at different times In java every reference can be polymorphic except of references to base types and final classes. It is the type of the object being referenced, not the reference type, that determines which method is invoked Polymorphic references are therefore resolved at run-time, not during compilation; this is called  dynamic binding Careful use of polymorphic references can lead to elegant, robust software designs
Method Overriding When a method of a sub-class has the same name and type as a method of the super-class, we say that this method is overridden. When an overridden method is called from within the sub-class: 1) it will always refer to the sub-class method 2) super-class method is hidden
Example: Hiding with Overriding 1 class A { int i, j; A(int a, int b) { i = a; j = b; } void show() { System.out.println("i and j: " + i + " " + j); } }
Example: Hiding with Overriding 2 class B extends A { int k; B(int a, int b, int c) { super(a, b); k = c; } void show() { System.out.println("k: " + k); } }
Example: Hiding with Overriding 3 When show() is invoked on an object of type B, the version of show() defined in B is used: class Override { public static void main(String args[]) { B subOb = new B(1, 2, 3); subOb.show(); } } The version of show() in A is hidden through overriding.
Overloading vs. Overriding Overloading deals with multiple methods in the same class with the same name but different signatures Overloading lets you define a similar operation in different ways for different data Overriding deals with two methods, one in a parent class and one in a child class, that have the same signature Overriding lets you define a similar operation in different ways for different object types
Abstract Classes Java allows abstract classes use the modifier  abstract  on a class header to declare an abstract class   abstract class Vehicle { … } An abstract class is a placeholder in a class hierarchy that represents a generic concept Vehicle Car Boat Plane
Abstract Class: Example public abstract class Vehicle {  String name; public String getName()  { return name; } \\ method body abstract public void move();   \\ no body! } An abstract class often contains  abstract methods , though it doesn’t have to Abstract methods consist of only methods  declarations,  without any method body
Abstract Classes An abstract class often contains  abstract methods , though it doesn’t have to Abstract methods consist of only methods  declarations,  without any method body The non-abstract child of an abstract class must override the abstract methods of the parent An abstract class cannot be instantiated The use of abstract classes is a design decision;  it helps us establish common elements in a class that is too general to instantiate
Abstract Method Inheritance allows a sub-class to override the methods of its super-class. A super-class may altogether leave the implementation details of a method and declare such a method abstract: abstract type name(parameter-list); Two kinds of methods: 1) concrete – may be overridden by sub-classes 2) abstract – must be overridden by sub-classes It is illegal to define abstract constructors or static methods.
Ad

More Related Content

What's hot (20)

OOPs in Java
OOPs in JavaOOPs in Java
OOPs in Java
Ranjith Sekar
 
Introduction to package in java
Introduction to package in javaIntroduction to package in java
Introduction to package in java
Prognoz Technologies Pvt. Ltd.
 
Unit 1 Java
Unit 1 JavaUnit 1 Java
Unit 1 Java
arnold 7490
 
Java String
Java StringJava String
Java String
Java2Blog
 
Hibernate Presentation
Hibernate  PresentationHibernate  Presentation
Hibernate Presentation
guest11106b
 
Exception handling in Java
Exception handling in JavaException handling in Java
Exception handling in Java
Abhishek Pachisia
 
Java 8 features
Java 8 featuresJava 8 features
Java 8 features
NexThoughts Technologies
 
Java interfaces
Java interfacesJava interfaces
Java interfaces
Raja Sekhar
 
String in java
String in javaString in java
String in java
Ideal Eyes Business College
 
Object Oriented Programming with Java
Object Oriented Programming with JavaObject Oriented Programming with Java
Object Oriented Programming with Java
backdoor
 
Java Persistence API (JPA) Step By Step
Java Persistence API (JPA) Step By StepJava Persistence API (JPA) Step By Step
Java Persistence API (JPA) Step By Step
Guo Albert
 
Learn Java with Dr. Rifat Shahriyar
Learn Java with Dr. Rifat ShahriyarLearn Java with Dr. Rifat Shahriyar
Learn Java with Dr. Rifat Shahriyar
Abir Mohammad
 
Introduction to Java
Introduction to JavaIntroduction to Java
Introduction to Java
Ashita Agrawal
 
Inheritance in JAVA PPT
Inheritance  in JAVA PPTInheritance  in JAVA PPT
Inheritance in JAVA PPT
Pooja Jaiswal
 
Java - Collections framework
Java - Collections frameworkJava - Collections framework
Java - Collections framework
Riccardo Cardin
 
Reflection in java
Reflection in javaReflection in java
Reflection in java
upen.rockin
 
Java Collections Tutorials
Java Collections TutorialsJava Collections Tutorials
Java Collections Tutorials
Prof. Erwin Globio
 
Hibernate
HibernateHibernate
Hibernate
Ajay K
 
Java basics and java variables
Java basics and java variablesJava basics and java variables
Java basics and java variables
Pushpendra Tyagi
 
Java Generics: a deep dive
Java Generics: a deep diveJava Generics: a deep dive
Java Generics: a deep dive
Bryan Basham
 

Similar to Unit 3 Java (20)

Java programming -Object-Oriented Thinking- Inheritance
Java programming -Object-Oriented Thinking- InheritanceJava programming -Object-Oriented Thinking- Inheritance
Java programming -Object-Oriented Thinking- Inheritance
Jyothishmathi Institute of Technology and Science Karimnagar
 
METHOD OVERLOADING AND INHERITANCE INTERFACE
METHOD OVERLOADING AND INHERITANCE INTERFACEMETHOD OVERLOADING AND INHERITANCE INTERFACE
METHOD OVERLOADING AND INHERITANCE INTERFACE
mohanrajm63
 
Java inheritance
Java inheritanceJava inheritance
Java inheritance
Arati Gadgil
 
Inheritance and its necessity in java.ppt
Inheritance and its necessity in java.pptInheritance and its necessity in java.ppt
Inheritance and its necessity in java.ppt
ssuserf170c4
 
Ap Power Point Chpt7
Ap Power Point Chpt7Ap Power Point Chpt7
Ap Power Point Chpt7
dplunkett
 
Inheritance in java
Inheritance in javaInheritance in java
Inheritance in java
COMSATS Institute of Information Technology
 
OCA Java SE 8 Exam Chapter 5 Class Design
OCA Java SE 8 Exam Chapter 5 Class DesignOCA Java SE 8 Exam Chapter 5 Class Design
OCA Java SE 8 Exam Chapter 5 Class Design
İbrahim Kürce
 
9781439035665 ppt ch10
9781439035665 ppt ch109781439035665 ppt ch10
9781439035665 ppt ch10
Terry Yoast
 
Inheritance and Substitution
Inheritance and SubstitutionInheritance and Substitution
Inheritance and Substitution
adil raja
 
Java basics
Java basicsJava basics
Java basics
Shivanshu Purwar
 
Oops
OopsOops
Oops
Sankar Balasubramanian
 
Lecture 12
Lecture 12Lecture 12
Lecture 12
talha ijaz
 
Android Training (Java Review)
Android Training (Java Review)Android Training (Java Review)
Android Training (Java Review)
Khaled Anaqwa
 
C# interview
C# interviewC# interview
C# interview
Thomson Reuters
 
Java chapter 5
Java chapter 5Java chapter 5
Java chapter 5
Abdii Rashid
 
Chap11
Chap11Chap11
Chap11
Terry Yoast
 
Question and answer Programming
Question and answer ProgrammingQuestion and answer Programming
Question and answer Programming
Inocentshuja Ahmad
 
oops-123991513147-phpapp02.pdf
oops-123991513147-phpapp02.pdfoops-123991513147-phpapp02.pdf
oops-123991513147-phpapp02.pdf
ArpitaJana28
 
Java - Inheritance Concepts
Java - Inheritance ConceptsJava - Inheritance Concepts
Java - Inheritance Concepts
Victer Paul
 
Micro Anti-patterns in Java Code
Micro Anti-patterns in Java CodeMicro Anti-patterns in Java Code
Micro Anti-patterns in Java Code
Ganesh Samarthyam
 
Ad

More from arnold 7490 (20)

Les14
Les14Les14
Les14
arnold 7490
 
Les13
Les13Les13
Les13
arnold 7490
 
Les11
Les11Les11
Les11
arnold 7490
 
Les10
Les10Les10
Les10
arnold 7490
 
Les09
Les09Les09
Les09
arnold 7490
 
Les03
Les03Les03
Les03
arnold 7490
 
Les02
Les02Les02
Les02
arnold 7490
 
Les01
Les01Les01
Les01
arnold 7490
 
Les12
Les12Les12
Les12
arnold 7490
 
Unit 8 Java
Unit 8 JavaUnit 8 Java
Unit 8 Java
arnold 7490
 
Unit 5 Java
Unit 5 JavaUnit 5 Java
Unit 5 Java
arnold 7490
 
Unit6 C
Unit6 C Unit6 C
Unit6 C
arnold 7490
 
Unit5 C
Unit5 C Unit5 C
Unit5 C
arnold 7490
 
Unit4 C
Unit4 C Unit4 C
Unit4 C
arnold 7490
 
Unit3 C
Unit3 C Unit3 C
Unit3 C
arnold 7490
 
Unit2 C
Unit2 C Unit2 C
Unit2 C
arnold 7490
 
Ad

Recently uploaded (20)

HCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser EnvironmentsHCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser Environments
panagenda
 
What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...
Vishnu Singh Chundawat
 
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Aqusag Technologies
 
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptxIncreasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Anoop Ashok
 
AI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global TrendsAI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global Trends
InData Labs
 
Big Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur MorganBig Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur Morgan
Arthur Morgan
 
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
SOFTTECHHUB
 
2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx
Samuele Fogagnolo
 
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep DiveDesigning Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
ScyllaDB
 
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager APIUiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPathCommunity
 
Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025
Splunk
 
Rusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond SparkRusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond Spark
carlyakerly1
 
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptxSpecial Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
shyamraj55
 
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdfThe Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
Abi john
 
Build Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For DevsBuild Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For Devs
Brian McKeiver
 
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes
 
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-UmgebungenHCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
panagenda
 
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven InsightsAndrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell
 
Role of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered ManufacturingRole of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered Manufacturing
Andrew Leo
 
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
BookNet Canada
 
HCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser EnvironmentsHCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser Environments
panagenda
 
What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...
Vishnu Singh Chundawat
 
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Aqusag Technologies
 
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptxIncreasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Anoop Ashok
 
AI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global TrendsAI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global Trends
InData Labs
 
Big Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur MorganBig Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur Morgan
Arthur Morgan
 
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
SOFTTECHHUB
 
2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx
Samuele Fogagnolo
 
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep DiveDesigning Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
ScyllaDB
 
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager APIUiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPathCommunity
 
Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025
Splunk
 
Rusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond SparkRusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond Spark
carlyakerly1
 
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptxSpecial Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
shyamraj55
 
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdfThe Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
Abi john
 
Build Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For DevsBuild Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For Devs
Brian McKeiver
 
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes
 
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-UmgebungenHCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
panagenda
 
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven InsightsAndrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell
 
Role of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered ManufacturingRole of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered Manufacturing
Andrew Leo
 
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
BookNet Canada
 

Unit 3 Java

  • 2. INDEX UNIT 3 PPT SLIDES S.NO. TOPIC LECTURE NO. PPTSLIDES Hierarchical abstractions L1 L1.1TO L1.9 Base class object. subclass, subtype, substitutability. L2 L2.1 TO L2.8 forms of inheritance- specialization, L3 L3.1 TO L3.5 specification. construction, extension, limitation, L4 L4.1 TO L4.9 combination. Benefits of inheritance, costs of inheritance. L5 L5.1 TO 5.4 Member access rules, super uses, L6 L6.1 TO 6.17 using final with inheritance. 7 polymorphism- method overriding, L7 L7.1 TO 7.11 abstract classes.
  • 3. Hierarchical Abstraction An essential element of object-oriented programming is abstraction. Humans manage complexity through abstraction. For example, people do not think of a car as a set of tens of thousands of individual parts. They think of it as a well-defined object with its own unique behavior. This abstraction allows people to use a car without being overwhelmed by the complexity of the parts that form the car. They can ignore the details of how the engine, transmission, and braking systems work. Instead they are free to utilize the object as a whole.
  • 4. Class Hierarchy A child class of one parent can be the parent of another child, forming class hierarchies Animal Reptile Bird Mammal Snake Lizard Bat Horse Parrot At the top of the hierarchy there’s a default class called Object .
  • 5. Class Hierarchy Good class design puts all common features as high in the hierarchy as reasonable The class hierarchy determines how methods are executed inheritance is transitive An instance of class Parrot is also an instance of Bird, an instance of Animal, …, and an instance of class Object
  • 6. Base Class Object In Java, all classes use inheritance. If no parent class is specified explicitly, the base class Object is implicitly inherited. All classes defined in Java, is a child of Object class, which provides minimal functionality guaranteed to e common to all objects.
  • 7. Base Class Object (cont) Methods defined in Object class are; equals(Object obj) Determine whether the argument object is the same as the receiver. getClass() Returns the class of the receiver, an object of type Class. hashCode() Returns a hash value for this object. Should be overridden when the equals method is changed. toString() Converts object into a string value. This method is also often overridden.
  • 8. Base class 1) a class obtains variables and methods from another class 2) the former is called subclass, the latter super-class (Base class) 3) a sub-class provides a specialized behavior with respect to its super-class 4) inheritance facilitates code reuse and avoids duplication of data
  • 9. One of the pillars of object-orientation. A new class is derived from an existing class: 1) existing class is called super-class 2) derived class is called sub-class A sub-class is a specialized version of its super-class: 1) has all non-private members of its super-class 2) may provide its own implementation of super-class methods Objects of a sub-class are a special kind of objects of a super-class.
  • 10. extends Is a keyword used to inherit a class from another class Allows to extend from only one class class One { int a=5; } class Two extends One { int b=10; }
  • 11. One baseobj ;// base class object. super class object baseobj can be used to refer its sub class objects. For example, Two subobj=new Two; Baseobj=subobj // now its pointing to sub class
  • 12. Subclass, Subtype and Substitutability A subtype is a class that satisfies the principle of substitutability. A subclass is something constructed using inheritance, whether or not it satisfies the principle of substitutability. The two concepts are independent. Not all subclasses are subtypes, and (at least in some languages) you can construct subtypes that are not subclasses.
  • 13. Subclass, Subtype, and Substitutability Substitutability is fundamental to many of the powerful software development techniques in OOP. The idea is that, declared a variable in one type may hold the value of different type. Substitutability can occur through use of inheritance, whether using extends , or using implements keywords.
  • 14. Subclass, Subtype, and Substitutability When new classes are constructed using inheritance, the argument used to justify the validity of substitutability is as follows; Instances of the subclass must possess all data fields associated with its parent class. Instances of the subclass must implement, through inheritance at least, all functionality defined for parent class. (Defining new methods is not important for the argument.) Thus, an instance of a child class can mimic the behavior of the parent class and should be indistinguishable from an instance of parent class if substituted in a similar situation .
  • 15. Subclass, Subtype, and Substitutability The term subtype is used to describe the relationship between types that explicitly recognizes the principle of substitution . A type B is considered to be a subtype of A if an instances of B can legally be assigned to a variable declared as of type A. The term subclass refers to inheritance mechanism made by extends keyword. Not all subclasses are subtypes . Subtypes can also be formed using interface , linking types that have no inheritance relationship.
  • 16. Subclass Methods allows to reuse a sequence of statements Inheritance allows to reuse classes by 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 . As the name implies, the child inherits characteristics of the parent(i.e the child class inherits the methods and data defined for the parent class
  • 17. Subtype Inheritance relationships are often shown graphically in a class diagram , with the arrow pointing to the parent class + fly() : void Animal weight : int + getWeight() : int Bird
  • 18. Substitutability (Deriving Subclasses) In Java, we use the reserved word extends to establish an inheritance relationship class Animal { // class contents int weight; public void int getWeight() {…} } class Bird extends Animal { // class contents public void fly() {…}; }
  • 19. Defining Methods in the Child Class: Overriding by Replacement A child class can override the definition of an inherited method in favor of its own that is, a child can redefine a method that it inherits from its parent the new method must have the same signature as the parent's method, but can have different code in the body In java, all methods except of constructors override the methods of their ancestor class by replacement. E.g.: the Animal class has method eat() the Bird class has method eat() and Bird extends Animal variable b is of class Bird, i.e. Bird b = … b.eat() simply invokes the eat() method of the Bird class If a method is declared with the final modifier, it cannot be overridden
  • 20. Forms of Inheritance Inheritance is used in a variety of way and for a variety of different purposes . Inheritance for Specialization Inheritance for Specification Inheritance for Construction Inheritance for Extension Inheritance for Limitation Inheritance for Combination One or many of these forms may occur in a single case.
  • 21. Forms of Inheritance (- Inheritance for Specialization - ) Most commonly used inheritance and sub classification is for specialization. Always creates a subtype, and the principles of substitutability is explicitly upheld. It is the most ideal form of inheritance. An example of subclassification for specialization is; public class PinBallGame extends Frame { // body of class }
  • 22. Specialization By far the most common form of inheritance is for specialization. Child class is a specialized form of parent class Principle of substitutability holds A good example is the Java hierarchy of Graphical components in the AWT: Component Label Button TextComponent TextArea TextField CheckBox ScrollBar
  • 23. Forms of Inheritance (- Inheritance for Specification - ) This is another most common use of inheritance. Two different mechanisms are provided by Java, interface and abstract , to make use of subclassification for specification . Subtype is formed and substitutability is explicitly upheld. Mostly, not used for refinement of its parent class, but instead is used for definitions of the properties provided by its parent. class FireButtonListener implements ActionListener { // body of class } class B extends A { // class A is defined as abstract specification class }
  • 24. Specification The next most common form of inheritance involves specification. The parent class specifies some behavior, but does not implement the behavior Child class implements the behavior Similar to Java interface or abstract class When parent class does not implement actual behavior but merely defines the behavior that will be implemented in child classes Example, Java 1.1 Event Listeners: ActionListener, MouseListener, and so on specify behavior, but must be subclassed.
  • 25. Forms of Inheritance (- Inheritance for Construction - ) Child class inherits most of its functionality from parent, but may change the name or parameters of methods inherited from parent class to form its interface. This type of inheritance is also widely used for code reuse purposes. It simplifies the construction of newly formed abstraction but is not a form of subtype, and often violates substitutability. Example is Stack class defined in Java libraries .
  • 26. Construction The parent class is used only for its behavior, the child class has no is-a relationship to the parent. Child modify the arguments or names of methods An example might be subclassing the idea of a Set from an existing List class. Child class is not a more specialized form of parent class; no substitutability
  • 27. Forms of Inheritance (- Inheritance for Extension - ) Subclassification for extension occurs when a child class only adds new behavior to the parent class and does not modify or alter any of the inherited attributes. Such subclasses are always subtypes, and substitutability can be used. Example of this type of inheritance is done in the definition of the class Properties which is an extension of the class HashTable .
  • 28. Generalization or Extension The child class generalizes or extends the parent class by providing more functionality In some sense, opposite of subclassing for specialization The child doesn't change anything inherited from the parent, it simply adds new features Often used when we cannot modify existing base parent class Example, ColoredWindow inheriting from Window Add additional data fields Override window display methods
  • 29. Forms of Inheritance (- Inheritance for Limitation - ) Subclassification for limitation occurs when the behavior of the subclass is smaller or more restrictive that the behavior of its parent class. Like subclassification for extension, this form of inheritance occurs most frequently when a programmer is building on a base of existing classes. Is not a subtype, and substitutability is not proper.
  • 30. Limitation The child class limits some of the behavior of the parent class. Example, you have an existing List data type, and you want a Stack Inherit from List, but override the methods that allow access to elements other than top so as to produce errors.
  • 31. Forms of Inheritance (- Inheritance for Combination - ) This types of inheritance is known as multiple inheritance in Object Oriented Programming. Although the Java does not permit a subclass to be formed be inheritance from more than one parent class, several approximations to the concept are possible. Example of this type is Hole class defined as; class Hole extends Ball implements PinBallTarget{ // body of class }
  • 32. Combimnation Two or more classes that seem to be related, but its not clear who should be the parent and who should be the child. Example: Mouse and TouchPad and JoyStick Better solution, abstract out common parts to new parent class, and use subclassing for specialization.
  • 33. Summary of Forms of Inheritance Specialization. The child class is a special case of the parent class; in other words, the child class is a subtype of the parent class. Specification. The parent class defines behavior that is implemented in the child class but not in the parent class. Construction. The child class makes use of the behavior provided by the parent class, but is not a subtype of the parent class. Generalization. The child class modifies or overrides some of the methods of the parent class. Extension. The child class adds new functionality to the parent class, but does not change any inherited behavior. Limitation. The child class restricts the use of some of the behavior inherited from the parent class. Variance. The child class and parent class are variants of each other, and the class-subclass relationship is arbitrary. Combination. The child class inherits features from more than one parent class. This is multiple inheritance and will be the subject of a later chapter.
  • 34. The Benefits of Inheritance Software Reusability (among projects) Increased Reliability (resulting from reuse and sharing of well-tested code) Code Sharing (within a project) Consistency of Interface (among related objects) Software Components Rapid Prototyping (quickly assemble from pre-existing components) Polymorphism and Frameworks (high-level reusable components) Information Hiding
  • 35. The Costs of Inheritance Execution Speed Program Size Message-Passing Overhead Program Complexity (in overuse of inheritance)
  • 36. Types of inheritance Acquiring the properties of an existing Object into newly creating Object to overcome the redeclaration of properties in deferent classes. These are 3 types: 1.Simple Inheritance SUB SUPER SUB 1 SUB 2 extends extends SUPER
  • 37. 2 . Multi Level Inheritance 3. Multiple Inheritance SUPER SUB SUB SUB SUPER 1 SUPER 2 extends extends implements SUB SUPER 1 SUPER 2 implements SUB extends
  • 38. Member access rules Visibility modifiers determine which class members are accessible and which do not Members (variables and methods) declared with public visibility are accessible, and those with private visibility are not Problem: How to make class/instance variables visible only to its subclasses? Solution: Java provides a third visibility modifier that helps in inheritance situations: protected
  • 39. Modifiers and Inheritance (cont.) Visibility Modifiers for class/interface: public : can be accessed from outside the class definition. protected : can be accessed only within the class definition in which it appears, within other classess in the same package, or within the definition of subclassess. private : can be accessed only within the class definition in which it appears. default-access (if omitted) features accessible from inside the current Java package
  • 40. The protected Modifier The protected visibility modifier allows a member of a base class to be accessed in the child protected visibility provides more encapsulation than public does protected visibility is not as tightly encapsulated as private visibility Dictionary + getDefinitions() : int + setDefinitions(): void + computeRatios() : double Book protected int pages + getPages() : int + setPages(): void
  • 41. Example: Super-Class class A { int i; void showi() { System.out.println("i: " + i); } }
  • 42. Example: Sub-Class class B extends A { int j; void showj() { System.out.println(“j: " + j); } void sum() { System.out.println("i+j: " + (i+j)); } }
  • 43. Example: Testing Class class SimpleInheritance { public static void main(String args[]) { A a = new A(); B b = new B(); a.i = 10; System.out.println("Contents of a: "); a.showi(); b.i = 7; b.j = 8; System.out.println("Contents of b: "); subOb.showi(); subOb.showj(); System.out.println("Sum of I and j in b:"); b.sum();}}
  • 44. Multi-Level Class Hierarchy The basic Box class: class Box { private double width, height, depth; Box(double w, double h, double d) { width = w; height = h; depth = d; } Box(Box ob) { width = ob.width; height = ob.height; depth = ob.depth; } double volume() { return width * height * depth; } }
  • 45. Multi-Level Class Hierarchy Adding the weight variable to the Box class: class BoxWeight extends Box { double weight; BoxWeight(BoxWeight ob) { super(ob); weight = ob.weight; } BoxWeight(double w, double h, double d, double m) { super(w, h, d); weight = m; } }
  • 46. Multi-Level Class Hierarchy Adding the cost variable to the BoxWeight class: class Ship extends BoxWeight { double cost; Ship(Ship ob) { super(ob); cost = ob.cost; } Ship(double w, double h, double d, double m, double c) { super(w, h, d, m); cost = c; }}
  • 47. Multi-Level Class Hierarchy class DemoShip { public static void main(String args[]) { Ship ship1 = new Ship(10, 20, 15, 10, 3.41); Ship ship2 = new Ship(2, 3, 4, 0.76, 1.28); double vol; vol = ship1.volume(); System.out.println("Volume of ship1 is " + vol); System.out.print("Weight of ship1 is”); System.out.println(ship1.weight); System.out.print("Shipping cost: $"); System.out.println(ship1.cost);
  • 48. Multi-Level Class Hierarchy vol = ship2.volume(); System.out.println("Volume of ship2 is " + vol); System.out.print("Weight of ship2 is “); System.out.println(ship2.weight); System.out.print("Shipping cost: $“); System.out.println(ship2.cost); } }
  • 49. “ super ” uses ‘ super’ is a keyword used to refer to hidden variables of super class from sub class. super.a=a; It is used to call a constructor of super class from constructor of sub class which should be first statement. super(a,b); It is used to call a super class method from sub class method to avoid redundancy of code super.addNumbers(a, b);
  • 50. Super and Hiding Why is super needed to access super-class members? When a sub-class declares the variables or methods with the same names and types as its super-class: class A { int i = 1; } class B extends A { int i = 2; System.out.println(“i is “ + i); } The re-declared variables/methods hide those of the super-class.
  • 51. Example: Super and Hiding class A { int i; } class B extends A { int i; B(int a, int b) { super.i = a; i = b; } void show() { System.out.println("i in superclass: " + super.i); System.out.println("i in subclass: " + i); } }
  • 52. Example: Super and Hiding Although the i variable in B hides the i variable in A, super allows access to the hidden variable of the super-class: class UseSuper { public static void main(String args[]) { B subOb = new B(1, 2); subOb.show(); } }
  • 53. Using final with inheritance final keyword is used declare constants which can not change its value of definition. final Variables can not change its value. final Methods can not be Overridden or Over Loaded final Classes can not be extended or inherited
  • 54. Preventing Overriding with final A method declared final cannot be overridden in any sub-class: class A { final void meth() { System.out.println("This is a final method."); } } This class declaration is illegal: class B extends A { void meth() { System.out.println("Illegal!"); } }
  • 55. Preventing Inheritance with final A class declared final cannot be inherited – has no sub-classes. final class A { … } This class declaration is considered illegal: class B extends A { … } Declaring a class final implicitly declares all its methods final. It is illegal to declare a class as both abstract and final.
  • 56. Polymorphism Polymorphism is one of three pillars of object-orientation. Polymorphism: many different (poly) forms of objects that share a common interface respond differently when a method of that interface is invoked: 1) a super-class defines the common interface 2) sub-classes have to follow this interface (inheritance), but are also permitted to provide their own implementations (overriding) A sub-class provides a specialized behaviors relying on the common elements defined by its super-class .
  • 57. Polymorphism A polymorphic reference can refer to different types of objects at different times In java every reference can be polymorphic except of references to base types and final classes. It is the type of the object being referenced, not the reference type, that determines which method is invoked Polymorphic references are therefore resolved at run-time, not during compilation; this is called dynamic binding Careful use of polymorphic references can lead to elegant, robust software designs
  • 58. Method Overriding When a method of a sub-class has the same name and type as a method of the super-class, we say that this method is overridden. When an overridden method is called from within the sub-class: 1) it will always refer to the sub-class method 2) super-class method is hidden
  • 59. Example: Hiding with Overriding 1 class A { int i, j; A(int a, int b) { i = a; j = b; } void show() { System.out.println("i and j: " + i + " " + j); } }
  • 60. Example: Hiding with Overriding 2 class B extends A { int k; B(int a, int b, int c) { super(a, b); k = c; } void show() { System.out.println("k: " + k); } }
  • 61. Example: Hiding with Overriding 3 When show() is invoked on an object of type B, the version of show() defined in B is used: class Override { public static void main(String args[]) { B subOb = new B(1, 2, 3); subOb.show(); } } The version of show() in A is hidden through overriding.
  • 62. Overloading vs. Overriding Overloading deals with multiple methods in the same class with the same name but different signatures Overloading lets you define a similar operation in different ways for different data Overriding deals with two methods, one in a parent class and one in a child class, that have the same signature Overriding lets you define a similar operation in different ways for different object types
  • 63. Abstract Classes Java allows abstract classes use the modifier abstract on a class header to declare an abstract class abstract class Vehicle { … } An abstract class is a placeholder in a class hierarchy that represents a generic concept Vehicle Car Boat Plane
  • 64. Abstract Class: Example public abstract class Vehicle { String name; public String getName() { return name; } \\ method body abstract public void move(); \\ no body! } An abstract class often contains abstract methods , though it doesn’t have to Abstract methods consist of only methods declarations, without any method body
  • 65. Abstract Classes An abstract class often contains abstract methods , though it doesn’t have to Abstract methods consist of only methods declarations, without any method body The non-abstract child of an abstract class must override the abstract methods of the parent An abstract class cannot be instantiated The use of abstract classes is a design decision; it helps us establish common elements in a class that is too general to instantiate
  • 66. Abstract Method Inheritance allows a sub-class to override the methods of its super-class. A super-class may altogether leave the implementation details of a method and declare such a method abstract: abstract type name(parameter-list); Two kinds of methods: 1) concrete – may be overridden by sub-classes 2) abstract – must be overridden by sub-classes It is illegal to define abstract constructors or static methods.