college/Summer-2024/CS-3443/Slides/txt/10_Abstract-Classes.txt

175 lines
3.3 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Application
Programming
Hend Alkittawi
OOP Concepts
Java Abstract Classes
ABSTRACT CLASSES
-
Sometimes it's useful to declare classes for which you never
intend to create objects. These classes are called abstract
classes.
-
The purpose of an abstract class is to provide an appropriate
superclass from which other classes can inherit and thus share
common design.
-
Abstract classes are used only as superclasses in inheritance
hierarchies.
-
Abstract classes are incomplete, and cannot be used to
instantiate objects.
ABSTRACT CLASSES
-
To make a class abstract, declare it with the keyword abstract
public abstract class MyClass { … }
-
Abstract classes normally contain one or more abstract methods
-
An abstract method is an instance method with the keyword
abstract and its declaration
-
An Abstract method do not provide implementations
public abstract myMethod();
-
Constructors and static methods cannot be declared as
abstract.
ABSTRACT CLASSES
-
Subclasses must declare the missing pieces to become concrete
classes from which objects can be instantiated.
-
Each concrete subclass of an abstract superclass must provide
concrete implementations of each of the superclass abstract
methods.
public abstract class Shape {
public class AbstractClassDemo {
private String color;
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public void display() {
System.out.println("This is a " + getType() + " shape. Its color is: " +
}
public abstract String getType();
public abstract void draw();
public static void main(String[] args) {
Circle circle = new Circle();
circle.setColor("red");
circle.setRadius(5.0);
circle.draw(); // implemented abstract method
circle.display(); // concrete method from
abstract class
}
}
getColor());
}
public class Circle extends Shape{
private double radius;
public double getRadius() {
return radius;
}
public void setRadius(double radius) {
this.radius = radius;
}
public void draw() {
System.out.println("Drawing a " + getColor() + " circle with radius " + getRadius() + ".");
}
@Override
public String getType() {
return "Circle";
}
}
public abstract class Shape {
private String color;
public Shape(String color) { this.color = color; }
public String getColor() { return color; }
public void setColor(String color) { this.color = color; }
public void display(){ System.out.println("This is a " + getType() + " shape. Its color is: " +
public abstract String getType();
public abstract void draw();
getColor()); }
}
public class Circle extends Shape{
public class AbstractClassDemo {
private double radius;
public Circle(String color, double radius) {
super(color);
this.radius = radius; }
public static void main(String[] args) {
//Shape shape = new Shape("blue"); // invalid
Circle circle = new Circle("red", 5.0);
circle.draw(); // implemented abstract method
circle.display(); // concrete method from
abstract class
}
public double getRadius() { return radius; }
public void setRadius(double radius) { this.radius = radius; }
}
@Override
public void draw() {
System.out.println("Drawing a " + getColor() + " circle with radius " + getRadius() + ".");
}
@Override
public String getType() {
return "Circle"; }
}
CODE DEMO
-
Create classes to demo
abstract classes
concepts!
DO YOU HAVE ANY
QUESTIONS?
THANK
YOU!
@
hend.alkittawi@utsa.edu
By Appointment
Online