0% found this document useful (0 votes)
33 views14 pages

Lec22-Abstract Class

An abstract class is a class that contains one or more abstract methods - methods that are declared but not implemented. Abstract classes cannot be instantiated but must be extended by subclasses that implement the abstract methods. The document discusses an abstract GeometricObject class that declares abstract getArea() and getPerimeter() methods. Circle and Rectangle subclasses extend GeometricObject and implement the abstract methods to return the area and perimeter specific to each shape type. The abstract class establishes a common interface for subclasses but leaves implementation to each subclass.

Uploaded by

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

Lec22-Abstract Class

An abstract class is a class that contains one or more abstract methods - methods that are declared but not implemented. Abstract classes cannot be instantiated but must be extended by subclasses that implement the abstract methods. The document discusses an abstract GeometricObject class that declares abstract getArea() and getPerimeter() methods. Circle and Rectangle subclasses extend GeometricObject and implement the abstract methods to return the area and perimeter specific to each shape type. The abstract class establishes a common interface for subclasses but leaves implementation to each subclass.

Uploaded by

Hla Hakim
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 14

Abstract Class

Lecture 22
Based on Slides of Dr. Norazah Yusof

1
Abstract Class
• Abstract class is a class with one or more abstract
methods.
• The abstract method

• Method signature without implementation


• An abstract class must have a modifier abstract
included in the class heading.
• The abstract class
• Cannot be instantiated
• Should be extended and implemented in subclasses

2
From Chapter 9
GeometricObject
-color: String The color of the object (default: white).
-filled: boolean Indicates whether the object is filled with a color (default: false).
-dateCreated: java.util.Date The date when the object was created.
+GeometricObject() Creates a GeometricObject.
+getColor(): String Returns the color.
+setColor(color: String): void Sets a new color.
+isFilled(): boolean Returns the filled property.
+setFilled(filled: boolean): void Sets a new filled property.
+getDateCreated(): java.util.Date Returns the dateCreated.
+toString(): String Returns a string representation of this object.

Circle Rectangle
-radius: double -width: double
+Circle() -height: double
+Circle(radius: double) +Rectangle()
+getRadius(): double +Rectangle(width: double, height: double)
+setRadius(radius: double): void +getWidth(): double
+getArea(): double +setWidth(width: double): void
+getPerimeter(): double +getHeight(): double
+getDiameter(): double +setHeight(height: double): void
+getArea(): double
+getPerimeter(): double 3
Abstract Classes
GeometricObject
-color: String
-filled: boolean
-dateCreated: java.util.Date
The # sign indicates
protected modifer #GeometricObject()
+getColor(): String
+setColor(color: String): void
+isFilled(): boolean
+setFilled(filled: boolean): void
+getDateCreated(): java.util.Date
+toString(): String
+getArea(): double
+getPerimeter(): double

Circle Rectangle
-radius: double -width: double

+Circle() -height: double

+Circle(radius: double) +Rectangle()


+getRadius(): double +Rectangle(width: double, height: double)
+setRadius(radius: double): void +getWidth(): double
+getDiameter(): double +setWidth(width: double): void
+getHeight(): double
+setHeight(height: double): void 4
Abstract Class

public abstract class GeometricObject{


private String color ="white";
private boolean filled;
private java.util.Date dateCreated;

protected GeometricObject(){
dateCreated = new java.util.Date();
}

:
public abstract double getArea();
public abstract double getPerimeter();
}

5
Abstract Class
public class Circle extends GeometricObject
{
private double radius;
:
:
public double getArea() {
return radius * radius * Math.PI;
}

public double getPerimeter() {


return 2 * radius * Math.PI;
}
}

6
Abstract Class
public class Rectangle extends GeometricObject
{
private double radius;
:
:
public double getArea() {
return width * height;
}

public double getPerimeter() {


return 2*(width + height);
}
}

7
NOTE
• An abstract method cannot be contained in
a non-abstract class.
• If a subclass of an abstract superclass
does not implement all the abstract
methods, the subclass must be declared
abstract.
• In other words, if a non-abstract subclass
extended from an abstract class, all the
abstract methods must be implemented,
even if they are not used in the subclass.

8
NOTE

• An abstract class cannot be instantiated


using the new operator, but you can still
define its constructors, which are invoked
in the constructors of its subclasses.
• For instance, the constructors of
GeometricObject are invoked in the Circle
class and the Rectangle class.

9
NOTE

• A class that contains abstract methods


must be abstract.
• However, it is possible to declare an
abstract class that contains no abstract
methods.
• In this case, you cannot create instances of
the class using the new operator. This class
is used as a base class for defining a new
subclass.

10
NOTE

• A subclass can be abstract even if its


superclass is concrete.
• For example, the Object class is concrete,
but its subclasses, such as
GeometricObject, may be abstract.

11
NOTE

• A subclass can override a method from its


superclass to declare it abstract.
• This is rare (unusual), but useful when the
implementation of the method in the
superclass becomes invalid in the
subclass.
• In this case, the subclass must be declared
abstract.

12
NOTE

• You cannot create an instance from an


abstract class using the new operator, but
an abstract class can be used as a data
type.
• Therefore, the following statement, which
creates an array whose elements are of
GeometricObject type, is correct.

GeometricObject[] geo = new GeometricObject[10];

13
Example: Using the GeometricObject
Class

• Objective: This example creates two geometric


objects: a circle, and a rectangle, invokes the
equalArea method to check if the two objects have
equal area, and invokes the
displayGeometricObject method to display the
objects.

14

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy