0% found this document useful (0 votes)
166 views60 pages

Inheritance and Polymorphism in OOP

The document discusses inheritance and polymorphism in object-oriented programming. It defines inheritance as allowing hierarchical classifications by making a subclass inherit attributes and behaviors from a superclass. There are two main types of inheritance relationships: generalization/specialization which follows an "is-a" relationship, and whole-part which follows a "has-a" relationship called aggregation. Inheritance allows code reuse and extension through subclasses that inherit from superclasses. The document provides examples of inheritance between classes like Box and BoxWeight.

Uploaded by

Abdex Aliyi
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
166 views60 pages

Inheritance and Polymorphism in OOP

The document discusses inheritance and polymorphism in object-oriented programming. It defines inheritance as allowing hierarchical classifications by making a subclass inherit attributes and behaviors from a superclass. There are two main types of inheritance relationships: generalization/specialization which follows an "is-a" relationship, and whole-part which follows a "has-a" relationship called aggregation. Inheritance allows code reuse and extension through subclasses that inherit from superclasses. The document provides examples of inheritance between classes like Box and BoxWeight.

Uploaded by

Abdex Aliyi
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
  • Inheritance
  • Basics of Inheritance
  • Type Casting
  • The Protected Modifier
  • Method Overloading and Overriding
  • Dynamic Method Dispatch
  • Polymorphism
  • Using Super
  • Abstract Classes
  • Using Final with Inheritance
  • Interfaces
  • Implementing Interfaces

Chapter 3

Inheritance and Polymorphism

1 DaDu CoET Department of computer science OOP 10/07/22


Inheritance
 Inheritance is one of the cornerstones of object-oriented
programming
 because it allows the creation of hierarchical classifications
 a class that is inherited is called a superclass.
 The class that does the inheriting is called a subclass
 A subclass inherits all of the instance variables and methods
defined by the superclass and adds its own, unique elements
 Advantages of Inheritance
 reuse
 enhancement,
 adaptation, etc
2 DaDu CoET Department of computer science OOP 10/07/22
Two ways of expressing relationships
 Generalization/Specialization
 ‘is a” relationship
 Example: Circle is a shape

 Whole-part
 Part of or “has a” relationship
 Example: Employee class has a BirthDate class
 Called aggregation

 Inheritance Creates an is-a relationship

3 DaDu CoET Department of computer science OOP 10/07/22


Shape
Superclass

3D_Shape 2D_Shape
Subclass

Subclass
Sphere Cube Rectangle Circle Triangle

Above: is-a
Circle is a 2D_Shape
below: has-a
Employee has a date

Employee Date
firstName day
lastName month
Birthdate year
Hiredate
4 10/07/22
DaDu CoET Department of computer science OOP
Basics of Inheritance
 To inherit a class, you simply incorporate the definition of one class
into another by using the extends keyword
 The general form is:
Class SubClassName extends SuperClassName
{
// body of class
}
 Java does not support the multiple inheritance
 Subclasses cannot access private members

5 DaDu CoET Department of computer science OOP 10/07/22


Example
// This program uses inheritance to extend Box.
class Box {
double width;
double height;
double depth;
// construct clone of an object
Box(Box ob) { // pass object to constructor
width = [Link];
height = [Link];
depth = [Link];
}
// constructor used when all dimensions specified
Box(double w, double h, double d) {
width = w;
height = h;
depth = d;
}

6 DaDu CoET Department of computer science OOP 10/07/22


// constructor used when no dimensions specified
Box() {
width = -1; // use -1 to indicate
height = -1; // an uninitialized
depth = -1; // box
}
// constructor used when cube is created
Box(double len) {
width = height = depth = len;
}
// compute and return volume
double volume() {
return width * height * depth;
}
}

7 DaDu CoET Department of computer science OOP 10/07/22


// Here, Box is extended to include weight.
class BoxWeight extends Box {
double weight; // weight of box
// constructor for BoxWeight
BoxWeight(double w, double h, double d, double m) {
width = w;
height = h;
depth = d;
weight = m;
}
}

8 DaDu CoET Department of computer science OOP 10/07/22


class DemoBoxWeight {
public static void main(String args[]) {
BoxWeight mybox1 = new BoxWeight(10, 20, 15, 34.3);
BoxWeight mybox2 = new BoxWeight(2, 3, 4, 0.076);
double vol;
vol = [Link]();
[Link]("Volume of mybox1 is " + vol);
[Link]("Weight of mybox1 is “+ [Link]);
[Link]();
vol = [Link]();
[Link]("Volume of mybox2 is " + vol);
[Link]("Weight of mybox2 is " + [Link]);
}
}

9 DaDu CoET Department of computer science OOP 10/07/22


Type Casting
 Syntax:
<Sub_Ref.> = (SubClassName)<sup_Ref.> ;
For example: Person p = new Employee();
Employee emp = (Employee)p;
 the super class reference variable should refer to a subclass
object.
 Otherwise it will compile correctly but there will be an error at
runtime

10 10/07/22
DaDu CoET Department of computer science OOP
The protected Modifier
 Visibility modifiers determine which class members
are inherited and which are not
 Variables and methods declared with public visibility
are inherited; those with private visibility are not
 But public variables violate the principle of
encapsulation
 There is a third visibility modifier that helps in
inheritance situations: protected
 The protected modifier allows a member of a base
class to be inherited into a child
 Protected visibility provides
 more encapsulation than public visibility does
 the best possible encapsulation that permits inheritance

11 DaDu CoET Department of computer science OOP 10/07/22


Example
Class Person { public void setAge(int i)
Private String firstName; {
Private String lastName; age = i;
Private int age; }
public String getfirsName(){ public setfirstName(String
return firstName; name)
{
}
firstName = name;
public String getlastName(){
}
return lastName;
public setlastName(String name)
}
{
public int getAge(){
lastName = name;
return age; }
} }
12 DaDu CoET Department of computer science OOP 10/07/22
Subclass Student
class Student extends Person{
private String stuId;
public String getStuId( ){
return stuId;
}
public void setStuId(String id){
stuId = id;
}
Public void display(){
[Link]([Link]);
[Link]([Link]);
[Link](this age);
[Link]([Link]);
}

}
13 DaDu CoET Department of computer science OOP 10/07/22
class StudentTest{
public static void main(String args[]){
Student stud1 = new Student ();
Student stud2 = new Student();
Person per1 = new Person ();
[Link]([Link](“Alef”));
[Link]([Link](“Mulugeta”));
[Link]([Link](28));
[Link]([Link]());
[Link]([Link]());
// can not inherits class’s private members
[Link]([Link]);
[Link]([Link]());
// can not inherits class’s private members
[Link]([Link]);

14 DaDu CoET Department of computer science OOP 10/07/22


[Link]([Link]());
[Link]([Link]()); // error
[Link](“ Kalid”);
[Link]([Link]());
}
}

15 DaDu CoET Department of computer science OOP 10/07/22


Method overloading and overriding
 In Java, one form of polymorphism refers to the fact
that you can have multiple methods with the same
name in the same class
 There are two kinds of polymorphism:
 Overloading
 Two or more methods with different signatures
 Overriding
 Replacing an inherited method with another
having the same signature

16 DaDu CoET Department of computer science OOP 10/07/22


Method Overriding
 when a method in a subclass has the same name and type
signature as a method in its superclass, then the method in the
subclass is said to override the method in the superclass
// Method overriding.
class A {
int i, j;
A(int a, int b) {
i = a;
j = b;
}
// display i and j
void show() {
[Link]("i and j: " + i + " " + j);
}
}

17 DaDu CoET Department of computer science OOP 10/07/22


class B extends A {
int k;
B(int a, int b, int c) {
super(a, b);
k = c;
}
// display k – this overrides show() in A
void show() {
[Link]("k: " + k);
}
}
class Override { The output
public static void main(String args[]) {
B subOb = new B(1, 2, 3); k: 3
[Link](); // this calls show() in B
}
}

18 DaDu CoET Department of computer science OOP 10/07/22


 If you wish to access the superclass version of an overridden
function, you can do so by using super.
class B extends A {
int k;
B(int a, int b, int c) {
super(a, b);
k = c;
}
void show() {
[Link](); // this calls A's show()
[Link]("k: " + k);
}
}
 output:
 i and j: 1 2 k: 3

19 DaDu CoET Department of computer science OOP 10/07/22


 The access specifiers for the overriding method can allow more
access than the overridden method, but not less
 For example, a protected method in the superclass can be made public
but not private
 it is a syntax error to override a method with a more restricted
access modifier
 Overloading vs. Overriding
 Don't confuse the concepts of overloading and overriding
 Overloading deals with multiple methods with the same name in the
same class, but with different signatures
 Overriding deals with two methods, one in a parent class and one in a
child class, that have the same signature
 Overloading lets you define a similar operation in different ways for
different data
 Overriding lets you define a similar operation in different ways for
different object types
20 DaDu CoET Department of computer science OOP 10/07/22
Dynamic Method Dispatch
 is the mechanism by which a call to an overridden function is
resolved at run time, rather than compile time.
 Dynamic method dispatch is important because this is how Java
implements run-time polymorphism.
 Method overriding forms the basis for this concept
 When an overridden method is called through a superclass
reference, Java determines which version of that method to execute
based upon the type of the object being referred to at the time the
call occurs
 When different types of objects are referred to, different versions of
an overridden method will be called

21 DaDu CoET Department of computer science OOP 10/07/22


// Dynamic Method Dispatch
class A {
void callme() {
[Link]("Inside A's callme method");
}
}
class B extends A {
// override callme()
void callme() {
[Link]("Inside B's callme method");
}
}

22 DaDu CoET Department of computer science OOP 10/07/22


class C extends A {
// override callme()
void callme() {
[Link]("Inside C's callme method");
}
}
class Dispatch {
public static void main(String args[]) {
A a = new A(); // object of type A
B b = new B(); // object of type B
C c = new C(); // object of type C
A r; // obtain a reference of type A
r = a; // r refers to an A object
[Link](); // calls A's version of callme
r = b; // r refers to a B object

23 DaDu CoET Department of computer science OOP 10/07/22


[Link](); // calls B's version of callme
r = c; // r refers to a C object
[Link](); // calls C's version of callme
}
}
 The output from the program is shown here:
Inside A's callme method
Inside B's callme method
Inside C's callme method

24 DaDu CoET Department of computer science OOP 10/07/22


Why Overridden Methods?
 Overridden methods are another way that Java implements the "one
interface, multiple methods" aspect of polymorphism
 by combining inheritance with overridden methods, a superclass can
define the general form of the methods that will be used by all of its
subclasses.
 Dynamic, run-time polymorphism is one of the most powerful
mechanisms that object oriented design brings to bear on code reuse
and robustness.

25 DaDu CoET Department of computer science OOP 10/07/22


Polymorphism
 The term polymorphism literally means "having many forms“
 also called dynamic binding or late binding or run-time binding
 allows to create versatile software designs
 In OOP, polymorphism promotes code reuse by calling the method
in a generic way.
 Suppose we create the following reference variable:
Animal myPets;
 Java allows this reference to point to an Animal object, or to any
object of any compatible type
 This compatibility can be established using inheritance or using
interfaces
 Careful use of polymorphic references can lead to elegant, robust
software designs

26 DaDu CoET Department of computer science OOP 10/07/22


References 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 Shape class is used to derive a class
called Circle, then a Shape reference could be used
to point to a Circle object.
Shape
Shape s;
s = new Circle();

Circle

27 DaDu CoET Department of computer science OOP 10/07/22


 Assigning a child object to a parent reference is considered to
be a widening conversion, and can be performed by simple
assignment
 Assigning a parent object to a child reference can be done
also, but it is considered a narrowing conversion and must
be done with a cast
 The widening conversion is the most useful

28 DaDu CoET Department of computer science OOP 10/07/22


Polymorphism via Inheritance
 It is the type of the object being referenced, not the
reference type, that determines which method is invoked
 Suppose the Shape class has a method called area,
and the Circle class overrides it.
 Now consider the following invocation:
[Link]();
 If s refers to a Shape object, it invokes the Shape
version of area; if it refers to a Circle object, it
invokes the Circle version.
29 DaDu CoET Department of computer science OOP 10/07/22
Polymorphism
 Consider the following inheritance

10/07/22 DaDu CoET Department of computer science OOP 30


Object Reference Conversion
 A polymorphic reference is a variable that can refer to
different types of objects at different points in time
 The method invoked through a polymorphic reference
can change from one invocation to the next
 All object references in Java are potentially
polymorphic
Account account1;
...
account1 = new SAccount(“s123”,”Tom”, 100, 0);
...
account1=new Account(“c123”,”Kim”,2000,1000);
 To enable methods to be called in a polymorphic way
Java allows a superclass reference to refer to a
subclass object.
31 DaDu CoET Department of computer science OOP 10/07/22
• As SAccount and CAccount extend the class Account both
of these statements are valid.

32 DaDu CoET Department of computer science OOP 10/07/22


Invoking methods through Superclass Reference
 When Account reference account1 referring to a
subclass object is used to invoke a method such
as withdraw(), the overridden withdraw() of that
subclassis invoked.
Account account1 = new
SAccount(“s123”,”Tom”,100, 0);
[Link](100); // withdraw of
SAccount invoked account1 = new
CAccount (“c343”,”Kim”,2000,1000);
[Link](200); // withdraw of
CAccount invoked

33 DaDu CoET Department of computer science OOP 10/07/22


Use of Polymorphism
Account[] accounts = new Account[3];
accounts[0] = new Account("a12345", "Charles", 1000);
accounts[1] = new SAccount("s12346", "Craig", 1200,
1000);
accounts[2] = new CAccount("c12347", "George", 200,
1000);
// Deduct fixed amount $500 from all accounts
for (inti=0; i<3; i++)
accounts[i].withdraw(500);
Which withdraw() methods are called ?
Though accounts[i] is an Account reference in Java,
actual method called is determined at run-time based
on the type of object being referred.
34 DaDu CoET Department of computer science OOP 10/07/22
Polymorphism via Interfaces
 An interface name can be used as the type of an
object reference variable.
Speaker current;
 The current reference can be used to point to any
object of any class that implements the Speaker
interface.
 The version of speak that the following line
invokes depends on the type of object that
current is referencing.
[Link]();

35 DaDu CoET Department of computer science OOP 10/07/22


Polymorphism via Interfaces
 Suppose two classes, Lecturer and Politician, both
implement the Speaker interface, providing distinct
versions of the speak method.
 In the following code, the first call to speak invokes one
version and the second invokes another:

Speaker guest = new lecturer();


[Link]();
guest = new politician();
[Link]();

36 DaDu CoET Department of computer science OOP 10/07/22


public class Plant {
public void grow() {
[Link](“Plant growing”);
}
}
class Tree extends Plant {
public void grow() {
[Link](“Tree growing”);
}
public void leavesShade() {
[Link](“Leaves Shading”);
}
}

37 DaDu CoET Department of computer science OOP 10/07/22


public class App {
public static void main(String [] args) {
Plant plant1 = new Plant();
Tree tree = new Tree();
Plant plant2 = tree;
[Link]();
doGrow(tree);
}
public static void doGrow (Plant plant) {
[Link]();
}
}

38 DaDu CoET Department of computer science OOP 10/07/22


Using super
 Whenever a subclass needs to refer to its immediate superclass, it
can do so by use of the keyword super
 super has two general forms.
 The first calls the superclass' constructor.
 The second is used to access a member of the superclass that has been
hidden by a member of a subclass.
 Using super to Call Superclass Constructors
 super(parameter-list);
 parameter-list specifies any parameters needed by the constructor in the
superclass.
 super( ) must always be the first statement executed inside a subclass‘
constructor.

39 DaDu CoET Department of computer science OOP 10/07/22


// BoxWeight now uses super to initialize its Box attributes.
class BoxWeight extends Box {
double weight; // weight of box
// initialize width, height, and depth using super()
BoxWeight(double w, double h, double d, double m) {
super(w, h, d); // call superclass constructor
weight = m;
}
}
 When a subclass calls super( ), it is calling the constructor of its
immediate superclass.
 super( ) always refers to the superclass immediately above the
calling class.
40 DaDu CoET Department of computer science OOP 10/07/22
The second form of super
[Link]
 member can be either a method or an instance variable.
 This second form of super is most applicable to situations in which
member names of a subclass hide members by the same name in the
superclass.
// Using super to overcome name hiding.
class A {
int i;
}
// Create a subclass by extending class A.
class B extends A {
int i; // this i hides the i in A
B(int a, int b) {
super.i = a; // i in A
i = b; // i in B
}

41 DaDu CoET Department of computer science OOP 10/07/22


void show() {
[Link]("i in superclass: " + super.i);
[Link]("i in subclass: " + i);
}
}
class UseSuper {
public static void main(String args[]) {
B subOb = new B(1, 2);
[Link]();
}
}
 This program displays the following:
i in superclass: 1
i in subclass: 2

42 DaDu CoET Department of computer science OOP 10/07/22


Abstract Classes
 In certain situation, we want to properties of classes to be always
extended and used. Such classes are called Abstract Classes.
 An Abstract class is a conceptual class.
 An Abstract class cannot be instantiated – objects cannot be
created.
 Abstract classes provides a common root for a group of classes,
nicely tied together in a package:
 general form:
abstract type name(parameter-list);
 When a class contains one or more abstract methods, it must be
declared as abstract class.
 The abstract methods of an abstract class must be defined in its
subclass (called concrete class)
43 DaDu CoET Department of computer science OOP 10/07/22
 We cannot declare abstract constructors or abstract static
methods.
 Any subclass of an abstract class must either implement
all of the abstract methods in the superclass, or be itself
declared abstract.
 Example: Shape is an abstract class

Shape

Circle Rectangle
44 DaDu CoET Department of computer science OOP 10/07/22
The Shape Abstract Class

public abstract class Shape {


public abstract double area();
public void move() { // non-abstract method
// implementation
}
}

45 DaDu CoET Department of computer science OOP 10/07/22


public Circle extends Shape {
protected double r;
protected static final double PI =3.1415926535;
public Circle() { r = 1.0; }
public double area() {
return PI * r * r;
}
…}
public Rectangle extends Shape {
protected double w, h;
public Rectangle() {
w = 0.0; h=0.0; }
public double area() {
return w * h;
}}

46 DaDu CoET Department of computer science OOP 10/07/22


Abstract Classes Properties
 A class with one or more abstract methods is automatically
abstract and it cannot be instantiated.
 A class declared abstract, even with no abstract methods can
not be instantiated.
 A subclass of an abstract class can be instantiated if it
overrides all abstract methods by implementing them.
 A subclass that does not implement all of the superclass
abstract methods is itself abstract; and it cannot be
instantiated.
 Although abstract classes cannot be used to instantiate
objects, they can be used to create object references
 it must be possible to create a reference to an abstract class so
that it can be used to point to a subclass object.

47 DaDu CoET Department of computer science OOP 10/07/22


Using final with Inheritance
 Using final to Prevent Overriding
 To disallow a method from being overridden, specify final as a modifier
at the start of its declaration.
 Methods declared as final cannot be overridden.
class A {
final void meth() {
[Link]("This is a final method.");
}
}
class B extends A {
void meth() { // ERROR! Can't override.
[Link]("Illegal!");
}
}

48 DaDu CoET Department of computer science OOP 10/07/22


 Methods declared as final can sometimes provide a
performance enhancement: The compiler is free to inline
calls to them because it "knows" they will not be
overridden by a subclass.
 When a small final function is called, often the Java
compiler can copy the bytecode for the subroutine directly
inline with the compiled code of the calling method,
 thus eliminating the costly overhead associated with a
method call
 Inlining is only an option with final methods.

49 DaDu CoET Department of computer science OOP 10/07/22


Using final to Prevent Inheritance
 We can prevent an inheritance of classes by other classes by
declaring them as final classes.
 Declaring a class as final implicitly declares all of its methods
as final, too.
 it is illegal to declare a class as both abstract and final
 since an abstract class is incomplete by itself and relies upon its
subclasses to provide complete implementations.
 This is achieved in Java by using the keyword final as follows:
final class Marks
{ // members
}
final class Student extends Person
{ // members
}
 Any attempt to inherit these classes will cause an error.

50 DaDu CoET Department of computer science OOP 10/07/22


Final Class Members
 All methods and variables can be overridden by default
in subclasses.
 This can be prevented by declaring them as final using
the keyword “final” as a modifier. For example:
 final int marks = 100;
 final void display();
 This ensures that functionality defined in this method
cannot be altered any. Similarly, the value of a final
variable cannot be altered.

51 DaDu CoET Department of computer science OOP 10/07/22


Interfaces
 Interface is a conceptual entity similar to a Abstract class.
 using interface, you can specify what a class must do, but
not how it does it.
 Can contain only constants (final variables) and abstract
method (no implementation) - Different from Abstract
classes.
 Use when a number of classes share a common interface.
 Each class should implement the interface.
 Any number of classes can implement an interface.
 One class can implement any number of interfaces
 Interfaces are designed to support dynamic method
resolution at run time
52 DaDu CoET Department of computer science OOP 10/07/22
 disconnect the definition of a method or set of methods
from the inheritance hierarchy
 Since interfaces are in a different hierarchy from classes,
it is possible for classes that are unrelated in terms of the
class hierarchy to implement the same interface.
 A class can implement any number of interfaces, but
cannot extend more than one class at a time.
 Therefore, interfaces are considered as an informal way
of realizing multiple inheritance in Java.
 Access modifier is either public or not used
 All methods and variables are implicitly public if the
interface, itself, is declared as public.
53 DaDu CoET Department of computer science OOP 10/07/22
Interface -Example

<<Interface>>
Speaker
speak()

Politician Priest Lecturer


speak() speak() speak()

54 DaDu CoET Department of computer science OOP 10/07/22


Interfaces Definition
 Syntax (appears like abstract class):
interface InterfaceName {
// Constant/Final Variable Declaration
// Methods Declaration – only abstract method
}

 Example:
interface Speaker {
public void speak( );
}

55 DaDu CoET Department of computer science OOP 10/07/22


Implementing Interfaces
 Interfaces are used like super-classes whose properties are
inherited by classes.
 To implement an interface, include the implements clause in a
class definition, and then create the methods defined by the
interface.
 The general form of a class that includes the implements clause:

class ClassName implements InterfaceName [, InterfaceName2, …]


{
// Body of Class
}
 If a class implements more than one interface, the interfaces are
separated with a comma
 The methods that implement an interface must be declared public

56 DaDu CoET Department of computer science OOP 10/07/22


Implementing Interfaces Example
class Politician implements Speaker {
public void speak(){
[Link](“Talk politics”);
}
}
class Priest implements Speaker {
public void speak(){
[Link](“Religious Talks”);
}
}
class Lecturer implements Speaker {
public void speak(){
[Link](“Talks Object Oriented Design and Programming!”);
}
}
57 DaDu CoET Department of computer science OOP 10/07/22
Partial Implementations
 If a class includes an interface but does not fully implement the
methods defined by that interface, then that class must be declared
as abstract.
 Extending Interfaces
 Like classes, interfaces can also be extended.
 This is achieved by using the keyword extends as follows:
interface InterfaceName2 extends InterfaceName1
{
// Body of InterfaceName2
}

58 DaDu CoET Department of computer science OOP 10/07/22


// One interface can extend another.
interface A {
void meth1();
void meth2();
}
// B now includes meth1() and meth2() — it adds meth3().
interface B extends A {
void meth3();
}
// This class must implement all of A and B
class MyClass implements B {
public void meth1() {
[Link]("Implement
meth1().");
}
public void meth2() {
[Link]("Implement
meth2().");
}

59 DaDu CoET Department of computer science OOP 10/07/22


Inheritance and Interface Implementation
 A general form of interface implementation:
class ClassName extends SuperClass implements InterfaceName [,
InterfaceName2, …]
{
// Body of Class
}

 This shows a class can extended another class while


implementing one or more interfaces. It appears like a
multiple inheritance (if we consider interfaces as
special kind of classes with certain restrictions or
special features).

60 DaDu CoET Department of computer science OOP 10/07/22

Chapter 3
Inheritance and Polymorphism
10/07/22
1
DaDu CoET Department of computer science OOP
Inheritance
10/07/22
2
Inheritance is one of the cornerstones of object-oriented 
programming 
because it allows the creati
10/07/22
3
Generalization/Specialization 
‘is a” relationship 
Example: Circle is a shape 
Whole-part 
Part of or “has a
Above: is-a
      Circle is a 2D_Shape
below: has-a
       Employee has a date
10/07/22
4
Shape
Triangle
Rectangle  
Circle
10/07/22
5
To inherit a class, you simply incorporate the definition of one class 
into another by using the extends keyword
10/07/22
6
// This program uses inheritance to extend Box.
class Box {
double width;
double height;
double depth;
// construc
10/07/22
7
// constructor used when no dimensions specified
Box() {
width = -1; // use -1 to indicate
height = -1; // an unin
10/07/22
8
// Here, Box is extended to include weight.
class BoxWeight extends Box {
double weight; // weight of box
// const
10/07/22
9
class DemoBoxWeight {
public static void main(String args[]) {
BoxWeight mybox1 = new BoxWeight(10, 20, 15, 34.3);
10/07/22
10
Syntax:
<Sub_Ref.> = (SubClassName)<sup_Ref.> ;
For example: Person p = new Employee();
     Employee emp = (Emp

You might also like