2016-11-12 2 views
-1

Ich möchte auf 3 private Variablen in einer abstrakten Klasse (MainAbstract.java) von einer anderen Klasse zugreifen und diese verwenden (SubAbstract.java) erwähnte abstrakte Klasse.Einfügen von Werten in nicht abstrakte Methoden in abstrakter Klasse unter Verwendung einer nicht abstrakten Nullenklasse

Von der Unterklasse möchte ich auf die getters() und setter() der Hauptklasse zugreifen.

In der Hauptklasse (dies ist eine abstrakte Klasse) gibt es eine abstrakte Methode namens ShowInfo().

Diese abstrakte Methode ShowInfo() sollte etwas tun, um jede Instanz der Unterklasse anzuzeigen.

Unten ist der Quellcode für die Hauptklasse (Abstract) und die Subklasse SubAbstract. Bitte verweisen Sie sie.

MainAbstract.java

package abstractionexample; 
public abstract class MainAbstract { 

    private String sName; 
    private String sType; 
    private int iQty; 

    public String getsName() { 
     return sName; 
    } 

    public void setsName(String sName) { 
     this.sName = sName; 
     } 

    public String getsType() { 
     return sType; 
     } 

    public void setsType(String sType) { 
     this.sType = sType; 
    } 

     public int getiQty() { 
     return iQty; 
    } 

     public void setiQty(int iQty) { 
      this.iQty = iQty; 
     } 

     public abstract void showInfo(); 

     public static void main(String[] args) {  

     } 
    } 

SubAbstract.java

package abstractionexample; 

public class SubAbstract extends MainAbstract{ 

    @Override 
    public void showInfo() { 

    } 

    //This is an instance and the getters() and setters() should use each instance of this kind of to get values and set values. 
    SubAbstract nSubAbs = new SubAbstract(); 

} 
+0

Ich bin mir nicht sicher, was Ihre Frage ist. Aber Sie können nicht von jeder externen Klasse einschließlich Unterklassen auf private Mitglieder zugreifen. –

+0

Sie haben Recht! Deshalb habe ich getters() und setters() benutzt. Ich versuche eine Möglichkeit zu finden, den Trick zu machen. – ChiranthakaJ

+1

Solange Ihre showInfo() -Methode leer bleibt, wird natürlich nichts angezeigt. Was erwartest du? – Heri

Antwort

0

Wenn ich richtig verstehe, Sie wollen die Setter-Methoden verwenden, um Eigenschaften der Instanz einzustellen nSubAbs und zeigen Sie diese Eigenschaften mit der showInfo() Methode.

Die Getter und Setter sind Sie leicht in Ihrer Unterklasse SubAbstract, weil sie von der übergeordneten Klasse MainAbstract

Hier ist ein Codebeispiel geerbt hat:

class SubAbstract extends MainAbstract{ 

    SubAbstract nSubAbs; 

    SubAbstract(int iQty, String name, String type) { 
     nSubAbs = new SubAbstract(); 
     this.nSubAbs.setiQty(iQty); 
     this.nSubAbs.setsName(name); 
     this.nSubAbs.setsType(type); 
    } 

    private SubAbstract() { 
     //no arg constructor 
    } 

    @Override 
    public void showInfo() { 
     System.out.println("iQty:" + nSubAbs.getiQty()); 
     System.out.println("name:" + nSubAbs.getsName()); 
     System.out.println("type:" + nSubAbs.getsType()); 
    } 
} 

Und die wichtigste Methode Ihrer MainAbstract-Klasse würde in etwa so aussehen (obwohl dies ein sehr schlechter Platz für die Hauptmethode ist, aber ich nehme an, Sie versuchen zu experimentieren)

public abstract class MainAbstract { 

    //..existing code.. 

    public static void main(String[] args) { 

     SubAbstract subAbstract = new SubAbstract(10, "someName", "someType"); 
     subAbstract.showInfo(); 
    } 
} 
Verwandte Themen