我想从另一个具有扩展(SubAbstract.java)的类中的Abstract Class(MainAbstract.java)中访问和使用3个私有变量。
从子类我想访问主类的getters()和setters()。
在主类(这是一个抽象类)中,有一个名为ShowInfo()的抽象方法。
这个ShowInfo()抽象方法应该做一些事情来查看子类的每个实例。
以下是MainClass(Abstract)和Sub Class SubAbstract的源代码。请参考。
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 :(得分:0)
如果我理解正确,您希望使用setter方法设置实例nSubAbs
的属性,并使用showInfo()
方法显示这些属性。
getter和setter在您的子类SubAbstract
中随时可用,因为它继承自父类MainAbstract
这是一个代码示例:
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());
}
}
你的MainAbstract类的主要方法看起来像这样(尽管这对主方法来说是一个非常糟糕的地方,但我想,你正试图进行实验)
public abstract class MainAbstract {
//..existing code..
public static void main(String[] args) {
SubAbstract subAbstract = new SubAbstract(10, "someName", "someType");
subAbstract.showInfo();
}
}