Java 通过void方法将变量从超类传递给子类

Java 通过void方法将变量从超类传递给子类,java,inheritance,Java,Inheritance,因此,我希望将s传递给重写该类的子类,并在childs方法中使用s,因为我希望根据s的数量打印来自子类的消息 t是一个私有数组,nt是一个私有数,可以这样做吗 void c() { int s= 0; for(int i = 0; i < t.length; i++){ s+= t[i]; } s= s/nt; } void c(){ int s=0; 对于(int i=0;i

因此,我希望将s传递给重写该类的子类,并在childs方法中使用s,因为我希望根据s的数量打印来自子类的消息

t是一个私有数组,nt是一个私有数,可以这样做吗

void c() {
      int s= 0;

      for(int i = 0; i < t.length; i++){
         s+= t[i];
      }
      s= s/nt;

    }
void c(){
int s=0;
对于(int i=0;i
为什么不让方法返回值

我会这样做:

//parent class method
int c() {
  int s= 0;

  for(int i = 0; i < t.length; i++){
     s+= t[i];
  }
  s= s/nt;
  return s;
}

//child class method
void printDependingOnNumber() {
  if(super.c()==0 /*or whatever number*/){
     //print here   
  }
}
//父类方法
int c(){
int s=0;
对于(int i=0;i

对我来说,方法“c”似乎只计算“s”的值,因此将其设为空并不十分方便。使其返回int也可以在子类中计算该值。

为什么不使该方法返回该值

我会这样做:

//parent class method
int c() {
  int s= 0;

  for(int i = 0; i < t.length; i++){
     s+= t[i];
  }
  s= s/nt;
  return s;
}

//child class method
void printDependingOnNumber() {
  if(super.c()==0 /*or whatever number*/){
     //print here   
  }
}
//父类方法
int c(){
int s=0;
对于(int i=0;i

对我来说,方法“c”似乎只计算“s”的值,因此将其设为空并不十分方便。将其设为return int也可以在子类中计算该值。

没有所谓的“重写类”。只能从类继承(扩展)。您知道访问说明符吗?在明文中,您不能访问私有变量(请参阅受保护)。但是有一种方法可以通过反射来访问私有变量(但通常这是一种不好的做法,我不知道有哪种情况需要它)。正如@Stan所说,您也可以使用方法。没有所谓的“重写类”。只能从类继承(扩展)。您知道访问说明符吗?在明文中,您不能访问私有变量(请参阅受保护)。但是有一种方法可以通过反射来访问私有变量(但通常这是一种不好的做法,我不知道有哪种情况需要它)。比如说@Stan,你也可以使用方法。我同意你的观点,伙计,但是我们被指示它是一个空的。把“s”变成私有财产(或者把它的最终价值保存为1)可以吗?这类东西应该通过更好地建模来解决,因为现在是这样,方法“c”是无用的。我同意你的观点,伙计,但我们得到了它成为一个空洞的指示,让“s”成为私有财产(或者将其最终价值保存为一)可以吗?这类东西应该通过更好地建模来修复,因为现在是这样,方法“c”是无用的。