2016-06-09 16 views
-3

Ich bin kopieren und fügen Sie diesen Code von der Website, an der ich arbeite.Java oop - Vererbung

* A Line composes of two Points - a begin point and an end point. 
*/ 
public class Line { 
// The private instance variables 
Point begin, end; // Object members - instances of the Point class 

// Constructors 
public Line(int x1, int y1, int x2, int y2) { 
    begin = new Point(x1, y1); // Construct the instances declared 
    end = new Point(x2, y2); 
} 
public Line(Point begin, Point end) { 
    this.begin = begin; // The caller constructed the instances 
    this.end = end; 
} 

// The public getter and setter for the private instance variables 
public Point getBegin() { 
    return begin; 
} 
public Point getEnd() { 
    return end; 
} 
public void setBegin(Point begin) { 
    this.begin = begin; 
} 
public void setEnd(Point end) { 
    this.end = end; 
} 

public int getBeginX() { 
    return begin.getX(); // Point's getX() 
} 
public void setBeginX(int x) { 
    begin.setX(x); // Point's setX() 
} 
public int getBeginY() { 
    return begin.getY(); // Point's getY() 
} 
public void setBeginY(int y) { 
    begin.setY(y); // Point's setY() 
} 
public int[] getBeginXY() { 
    return begin.getXY(); // Point's getXY() 
} 
public void setBeginXY(int x, int y) { 
    begin.setXY(x, y); // Point's setXY() 
} 
public int getEndX() { 
    return end.getX(); // Point's getX() 
} 
public void setEndX(int x) { 
    end.setX(x); // Point's setX() 
} 
public int getEndY() { 
    return end.getY(); // Point's getY() 
} 
public void setEndY(int y) { 
    end.setY(y); // Point's setY() 
} 
public int[] getEndXY() { 
    return end.getXY(); // Point's getXY() 
} 
public void setEndXY(int x, int y) { 
    end.setXY(x, y); // Point's setXY() 
} 

// The toString() describe itself 
public String toString() { 
    return "Line[begin=" + begin + ",end=" + end + "]"; 
     // Invoke begin.toString() and end.toString() 
} 

public double getLength() { 
    return begin.distance(end); // Point's distance() 
    } 
} 

hier So haben wir die Klassen public class Point und öffentlichen Klasse Linie

im ersten Konstruktor öffentlichen Linie .... so wie wir hier sehen contruct wir die Klasse, es ist ein Konstruktor ist und dort ist nichts falsch daran, wie es verwendet oder etwas falsch über seine Logik ist nicht vorhanden

aber es gibt auch diese Methode öffentlichen Punkt ... das ist nicht die Point-Klasse, also wie kommen wir können diese Methode hier verwenden.

Ich habe das irgendwie herausgefunden, da Point sich wie eine Art Umkehrpunkt verhält, da wir in dieser Methode anfangen und beginnen wollen, ist ein Punkt, ein Objekt definiert die Punktklasse. also ich verstehe das, das ist der einzige Weg, wie wir anfangen können. Aber sobald wir es tun

public static void main(String[] args) { 
    Line l1 = new Line(new Point(7,8), new Point(2,5)); 

Der Konstruktor beginnt hier zu handeln. Am Ende wird eine neue Linie gebildet. aber im Konstruktor gibt es keine solche Sache wie

oder gibt es Rückleitung; aber wir können es nicht sehen? Ich weiß es nicht. jedoch in dem Verfahren, das Rückgabetyp als Punkt nimmt es gibt eine

return point; 

Aber keine

return x; 

in Bauer, Ich habe Probleme hier die Logik zu verstehen.

und durch die Art und Weise können wir von dieser Methode profitieren

public Point getBegin() { 
    return begin; 
} 

auf diese Weise:

l1.getBegin().SOMEPOINTMETHOD; 

aber was, wenn wir so etwas nicht tun und initiieren nur

l1.getBegin(); 

Welche Art von Ausgabe erhalten wir? Ich weiß, dass der Ausgabetyp zeigen wird, aber da Punkt ein Objekt ist und da wir die Instanzen des Objekts nicht eingegeben haben, werden wir nichts richtig finden? Eclipse gibt in diesem Fall einen seltsamen Fehler.

Ich weiß, es ist so lange her, aber ich versuche nur, die Logik hier zu verstehen, tut mir leid, wenn ich zu "DUMMY" bin und bitte nicht sofort urteile -.- (Gleicher Fall für Off-Topicing dies Thema)

+0

aber es gibt Dinge wie Rückgabetypen, also ist 'public Point xxx' eigentlich eine normale Methode und kein Konstruktor. Genau wie eine Methode wäre 'public int getSize() {...}' eine zufällige Methode mit dem Rückgabetyp 'int'. – SomeJavaGuy

+0

"aber im Konstruktor gibt es keine Rückleitung;" - Konstruktoren haben keinen Rückgabetyp. Denken Sie so, da der Konstruktor bereits eine Instanz dieser Klasse erstellt, brauchen Sie keine explizite Rückgabe. – Mamun

+0

Wenn ich Sie wäre, würde ich zuerst einige dieser grundlegenden Java-Lesungen wie diese hier lesen> https://docs.oracle.com/javase/tutorial/java/concepts/object.html und hier geht es auch darum Punkte :)> https://docs.oracle.com/javase/specs/jls/se7/html/jls-8.html#jls-8.8 Vertrauen Sie mir einfach, wenn Sie ernsthaft Java zu lernen, beginnen Sie zu lesen, gibt es viel lesen zu tun, egal wie gut Sie es bekommen, damit Sie genauso gut anfangen können :)! – Filip

Antwort

2

Konstruktoren sind eine spezielle Art von (Klassengebundener) Methode, die implizit eine Instanz des Klassentyps erzeugt. Sie müssen das Schlüsselwort new verwenden, um diese Instanz abzurufen.

Wenn Sie eine Methode mit einem nicht void Returntype verwenden, wird der Methodenrumpf ausgeführt und am Ende wird ein Objekt vom Typ Returntype zurückgegeben. Es liegt an Ihnen (z. B. Ihrem Programm), etwas mit dem zurückgegebenen Objekt zu tun, aber Sie können es auch einfach ignorieren.

Und vor allem: Das hat nichts mit Vererbung zu tun!

+0

Danke, obwohl der Titel meines Themas falsch ist, anstatt all dieser Leute hier hast du das ignoriert und geholfen. Danke :) – Xenidia