使用子非抽象类将值插入抽象类中的非抽象方法

时间:2016-11-12 11:49:51

标签: java oop abstract-class abstraction

我想从另一个具有扩展(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();  

 }

1 个答案:

答案 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();
    }
}