abstract

Status
Nicht offen für weitere Antworten.

kostonstyle

Aktives Mitglied
hallo miteinander
mit abstract kann man keine instanzen bilden, oder verstehe ich es falsch!
Code:
package pkg.abs;

import pkg.*;
import java.io.Console;

abstract class Form {
   public abstract double umfang();
   public abstract double flaeche();
}

class Kreis extends Form {
   private double radius = 1.0;

   public Kreis()            { }
   public Kreis(double r)    { this.radius = r; }

   public double getRadius() { return radius; }
   public void setRadius(double r) { 
      if (r > 0) 
         this.radius = r;
   }

   public double umfang()    { return 2 * Math.PI * radius; }
   public double flaeche()   { return Math.PI * radius * radius; }
}

class Rechteck extends Form {
   private double breite = 1.0;
   private double laenge = 1.0;

   public Rechteck() { }
   public Rechteck(double b, double l) { 
      this.breite = b;
      this.laenge = l;
   }

   public double getBreite() { return breite; }
   public double getLaenge() { return laenge; }
   public void setBreite(double b) { 
      if (b > 0) 
         this.breite = b;
   }
   public void setLaenge(double l) { 
      if (l > 0) 
         this.laenge = l;
   }

   public double umfang()    { return 2 * (laenge + breite); }
   public double flaeche()   { return laenge * breite; }
}


class AbstrakteKlassen {
   public static void main(String[] args) {
     Console cons = System.console();
     cons.printf("\n");
     
     Form[] formen = new Form[3];
     formen[0] = new Kreis(3);
     formen[1] = new Rechteck(10, 2);
     formen[2] = new Kreis(12.8);

     double gesamtflaeche = 0.0;
     for(int i = 0; i < formen.length; ++i) 
        gesamtflaeche += formen[i].flaeche();

     cons.printf(" Gesamtfl�che = %.2f \n", gesamtflaeche);
   }
}
 

diggaa1984

Top Contributor
man kann von abstrakten Klassen nur Unterklassen instanziieren, also wie du es bereits getan hast. In deinem Fall wäre ein Interface vielleicht angebrachter, da du hier lediglich 2 Methoden deklarierst. Implementieren kann man mehrere Interfaces, aber man kann nur von einer Oberklasse erben!
 

L-ectron-X

Gesperrter Benutzer
Richtig, von abstrakten Klassen kann man keine Objekte erzeugen, weil die Klassen noch nicht fertig (abstrakt == vereinfacht) sind.
 

kostonstyle

Aktives Mitglied
Hier wird die abstrakte Klasse instanziert, aber warum lässt es der Compiler dies zu?
Code:
 Form[] formen = new Form[3];
     formen[0] = new Kreis(3);
     formen[1] = new Rechteck(10, 2);
     formen[2] = new Kreis(12.8);
 

0x7F800000

Top Contributor
Form ist eine abstrakte Klasse, Form[] ist dagegen durchaus "konkret".
Das ist doch grad sinn und zweck der Polymorphie, was du hier machst.
 

Painii

Bekanntes Mitglied
Form[] ist ja noch keine direkte Instanziierung...
formen = Form[3] sichert dir den Platz für 3 Form-Objekte, nicht die Objekte selbst
Form[0].umfang() würde ja null liefern, weil du da noch kein Form-Objekt gespeichert hast.

Form[0]=Form() geht auch nicht, weil du abstraktes nicht als Instanz speichern kannst
Form[0]=Kreis() geht, weil der Kreis nicht abstrakt ist, aber eine Form ist.

Polymorphie halt, wie schon beschrieben
 

kostonstyle

Aktives Mitglied
das stimmt, das ist keine direkte Instanzierung, weil die Klammern fehlen...
Code:
package pkg;

/**
 *
 * @author developer
 */

class Baum {
    private int alter;

    Baum(int alter) {
        this.alter = alter;
    }
}

public class Exercise {

    Baum[] obj = new Baum[2];
    obj[0] = new Baum(39);
    obj[1] = new Baum(44);
    //Baum obj = new Baum(20);
    

}
warum erhalte ich hier eine fehlermeldung?
 

Templon

Bekanntes Mitglied
Code:
	obj[0] = new Baum(39);
	obj[1] = new Baum(44);

Muss in einer Methode stehen.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Say abstract class und Objekt erzeugen - Dringend Hilfe Java Basics - Anfänger-Themen 10
S Wann Methode abstract? Java Basics - Anfänger-Themen 10
O Verständniss Problem bei abstract class Java Basics - Anfänger-Themen 7
H abstract und interface Java Basics - Anfänger-Themen 4
H abstract - Wozu? Java Basics - Anfänger-Themen 6
B Interface vs Abstract Java Basics - Anfänger-Themen 2
B Objekte zählen/ Vererbung/ Kopplung/ Interface/ Abstract Class Java Basics - Anfänger-Themen 5
W Vererbung, abstract und Konstruktoren Java Basics - Anfänger-Themen 30
J OOP Wie sollte ich das organisieren (Abstract? Interface?) Java Basics - Anfänger-Themen 33
Azazel Ist die abstract class das selbe wie ein interface ? Java Basics - Anfänger-Themen 33
S Compiler-Fehler not abstract and does not override Java Basics - Anfänger-Themen 9
M abstract method does not override or implement.... Java Basics - Anfänger-Themen 7
B Fehler : class is abstract and does not overwrite Java Basics - Anfänger-Themen 2
B klasse abstract Java Basics - Anfänger-Themen 9
R Wofür abstract? Java Basics - Anfänger-Themen 29
E Klasse abstract machen Java Basics - Anfänger-Themen 3
G Schlüsselworte Bedeutung von abstract Java Basics - Anfänger-Themen 2
C Liste mit Attribut Abstract vererben Java Basics - Anfänger-Themen 11
Y Theorie: Abstract Method Java Basics - Anfänger-Themen 6
P Problem mit Eclipse "must be declared as abstract" Java Basics - Anfänger-Themen 3
O Abstract Method & Generics Java Basics - Anfänger-Themen 10
B abstract static Java Basics - Anfänger-Themen 16
T abstract class Java Basics - Anfänger-Themen 8
W abstract static Java Basics - Anfänger-Themen 3
F does not overwride abstract method Java Basics - Anfänger-Themen 2
G Verständnisfrage zum Interface und Abstract Java Basics - Anfänger-Themen 3
A in abstract Klasse private Variablen Java Basics - Anfänger-Themen 3
J abstract & Polymorphismus Java Basics - Anfänger-Themen 11
K Problem mit Abstract Table Model Java Basics - Anfänger-Themen 5
D Fehlermeldung "Time is not abstract" Java Basics - Anfänger-Themen 6
T Problem mit Abstract Windowing Toolkit(simples Problem) Java Basics - Anfänger-Themen 8
P Adaptor, Abstract Factory Java Basics - Anfänger-Themen 12
K <class> is not abstract and does not override abstract Java Basics - Anfänger-Themen 5
S Brauche Hilfe bei "abstract" Java Basics - Anfänger-Themen 12
G fenster abstract Java Basics - Anfänger-Themen 18
R abstract class <-> instance Java Basics - Anfänger-Themen 6
G Abstract Class - Abstract Method Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben