向抽象中的非抽象方法插入值 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();
}
}
我想访问和使用来自另一个 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();
}
}