2016-10-30 9 views
-2

Ich habe den folgenden Code:Java - Anwendung Methoden aus einer anderen Klasse

interface Paint { 
    float paintPerSurfaceUnit = (float) 0.3; 
} 

class PaintThings implements Paint { 
    public float paint_sphere(Sphere obj){ 
     return (obj.area() * paintPerSurfaceUnit); 
    } 

    } 

    class Sphere extends Shape { 
    int radius; 
    public float area(){ 
     return (float) (4*3.14*radius*radius); 
    } 
    } 

Wie kann ich „paint_sphere“ Zugriff auf Haupt mit dem Objekt Sphere?

+1

Sie müssen eine Instanz von 'PaintThings' – Arijoon

+0

Mit der Kugel Klasse zu reduzieren Kopplung oder Objekt? – Treycos

+0

'new PaintThings(). Paint_sphere (mySphere);' wobei 'mySphere' das Sphere-Objekt ist. – Gendarme

Antwort

0

Sie können diesen Code ausprobieren, die Methode paint instanziate die Farbe Dinge und das Objekt Form über diese

class Sphere extends Shape { 
    int radius; 
    public float area(){ 
     return (float) (4*3.14*radius*radius); 
    } 
    public float paint(){ 
     return new PaintThings().paint_sphere(this); 
    } 

passieren, aber der bessere Weg ist es, das PaintThing Objekt über den Konstruktor übergeben

class Sphere extends Shape { 
    int radius; 
    Paint paint; 
    Sphere(Paint paint){ 
    this.paint = paint; 
    } 
    public float area(){ 
     return (float) (4*3.14*radius*radius); 
    } 
    public float paint(){ 
     return paint.paint_sphere(this); 
    } 
+0

Er möchte nicht zwei Klassen verwenden – Treycos

+1

JA! Es ist perfekt, vielen Dank !, –

+0

Ich möchte Schmerz Form ohne Make PaintThings Objekt –

0

Sie müssten eine Instanz eines PaintThings verwenden.

public static void main(String[] args){ 
    Sphere sphere = new Sphere(); 
    PaintThings paintthings = new PaintThings(); 
    paintthings.paint_sphere(sphere); 
} 

Achten Sie auf eine Sphere in die paint_sphere(Sphere) Methode zu übergeben.

+0

Ich möchte kein PaintThink-Objekt erstellen, das ich in System Print verwenden möchte –

+0

Was meinst du? –

+0

Was ist Systemdruck? –

1

Sie haben zwei Möglichkeiten hier:
Entweder Ihre Funktion

class PaintThings implements Paint { 
    static public float paint_sphere(Sphere obj){ 
     return (obj.area() * paintPerSurfaceUnit); 
    } 
} 

statisch machen und es so, dass

mySphere sphere = new Sphere(); 
PaintThings.paintSphere(yourSphere); 

nennen oder ein Objekt von Paint machen zu:

PaintThings myPainter = new PaintThings(); 
mySphere sphere = new Sphere(); 
myPainter.paint_sphere(mySphere); 
+0

Wenn 'paint_sphere()' statisch gemacht wird, dann muss 'paintPerSurfaceUnit' ebenfalls statisch sein. – Arijoon

+0

Ich möchte so etwas in main: System.out.println (PaintThings(). Paint_sphere (bigBall)); –

+0

wie @Arijoon sagte, benutze meine erste Lösung und mache 'paintPerSurfaceUnit' statisch, aber das ist komisch ... – Treycos

Verwandte Themen