55 lines
1.2 KiB
Markdown
55 lines
1.2 KiB
Markdown
<!--
|
|
title: Abstrakte Klasse
|
|
description: Folien für abstrakte Klassen in Programmieren 1
|
|
url: https://git.henriburau.de/tutorien/programmieren-1
|
|
header: Programmieren 1 **Tutorium**
|
|
footer: Henri Burau und Eva Meinen
|
|
-->
|
|
|
|
# Abstrakte Methoden
|
|
|
|
Eine Methode ohne Implementation
|
|
|
|
```java
|
|
abstract double getArea();
|
|
```
|
|
|
|
---
|
|
|
|
# Abstrakte Methoden
|
|
|
|
Eine Klasse mit mindestens einer abstrakten Methode muss abstrakt sein
|
|
|
|
Es können keine Objekte einer abstrakten Klasse erzeugt werden
|
|
|
|
```java
|
|
abstract class Shape {
|
|
abstract double getArea();
|
|
String toString() {
|
|
return "Shape";
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
Es können keine Objekte einer abstrakten Klasse erzeugt werden, jedoch Variablen dieser ein Objekt einer nicht abstrakten Subklasse aufnehmen:
|
|
|
|
```java
|
|
class Circle extends Shape {
|
|
private double radius;
|
|
Circle(int rad) {radius = rad; }
|
|
|
|
double getArea(){
|
|
return 3.14 * radius * radius;
|
|
}
|
|
}
|
|
//Shape shape1 = newCircle(4);
|
|
//System.out.printf("%.2f", shape1.getArea());
|
|
```
|
|
|
|
---
|
|
|
|
# Übung
|
|
|
|
* Ändere die Klasse `Animal` zu einer abstrakten Klasse. Alle Methoden die bei `Sheep` und `Cow` gleich sind müssen nicht abstrakt sein. Füge aber eine abstrakte Methode `String makeNoise()` ein. Ändere den Code and den richtigen Stellen ab.
|