向抽象中的非抽象方法插入值 Class 使用子非抽象 Class

Inserting Values to Non Abstract Methods in Abstract Class Using a Sub Non Abstract Class

我想访问和使用来自另一个 class 的摘要 Class(MainAbstract.java) 中的 3 个私有变量,该摘要从前面提到的扩展 (SubAbstract.java)摘要Class.

从子 class 我想访问主 class 的 getters() 和 setter()。

在主体class(这是一个抽象class)中有一个名为ShowInfo()的抽象方法。

这个 ShowInfo() 抽象方法应该做一些事情来查看子 class 的每个实例。

下面是 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();  

 }

如果我没理解错的话,您想使用 setter 方法来设置实例的属性 nSubAbs 并使用 showInfo() 方法显示这些属性。

getter 和 setters 在您的子class SubAbstract随时可用,因为它继承自父 class 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 class 的主要方法看起来像这样(虽然这是主要方法的一个非常糟糕的地方,但我想,您正在尝试试验)

public abstract class MainAbstract {

    //..existing code..

    public static void main(String[] args) {

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