175 lines
3.3 KiB
Plaintext
175 lines
3.3 KiB
Plaintext
|
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
|
|||
|
|
|||
|
|