Programmieren_1/abstract.md

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.