如何从扩展名回调一个Abstract类

时间:2016-04-13 14:24:10

标签: java extends

所以我必须创建一个扩展抽象类的类,并列出家庭作业的类型和正在使用的页面。但是,我并不完全理解如何回调读取的页面和家庭作业的类型,同时也正确地创建了一个使用createAssignment。这是我到目前为止所做的,但它似乎并没有起作用。任何帮助表示赞赏。

public abstract class Homework
{
    public abstract int pagesRead();
    public abstract String typeHomework();
    public abstract void createAssignment(int p);
}

public class MyMath extends Homework
{
    public abstract void createAssignment(int p, String t)
    {
       p = 5;
       t = "Math";
    }

}

4 个答案:

答案 0 :(得分:1)

您的代码重新格式化了语法修正:

for(int i=2; i < 256; i+=4) {
    if (size == i) {    
        unit /= 4;
    }
}

您还必须实现其他两种抽象方法。

分配给方法的参数是没有意义的:-)我想你想把它们分配给public abstract class Homework { public abstract int pagesRead(); public abstract String typeHomework(); public abstract void createAssignment(int p, String t); } public class MyMath extends Homework { public void createAssignment(int p, String t) { p = 5; t = "Math"; } } 实例中的变量。

我还没有测试过它。这有帮助吗?

答案 1 :(得分:1)

考虑到你的上一个问题和这个问题,你显然不理解抽象的概念。

当你在public abstract void createAssignment(int p);课程上定义Homework时,你说的是#34;扩展这个类的任何具体类(读取而不是抽象)应该实现这个方法&#34;,但是在具体的class你再次尝试使用abstract关键字实现相同的方法,只是使用不同的签名,这是错误的。

删除abstract关键字并更改签名:

  public void createAssignment(int p, String t) {
    p = 5;
    t = "Math";
  }

或实现抽象方法:

 @Override
  public void createAssignment(int p) {

  }

请记住,除非您将Homework抽象化,否则必须实现在MyMath中定义的所有抽象方法。这会重新实现createAssignment(int p)&#34;再次&#34;如果你只是超载它。

答案 2 :(得分:0)

我编辑了两个程序,使其中一个程序抽象只是不起作用,所以它们都是抽象的,createAssignment现在是无效的。这现在有效。谢谢你的格式化指针。

public abstract class Homework
{
public abstract int pagesRead();
public abstract String typeHomework();
public abstract void createAssignment(int p);

}

 public abstract class MyMath extends Homework
{
 public void createAssignment(int p, String t)
 {
  p = 5;
  t = "Math";
}

}

答案 3 :(得分:0)

这是一个非常简单的伙伴:

首先,您需要实现抽象方法:

public class MyMath extends Homework {
    public int pagesRead(){
       return 3; // any number that you want
    }

    public String typeHomework(){
       return "My math homework"; // any text for the homework
    }

    public void createAssignment(int p){
       // do anything with p 
    }
}

正如我所看到的,我猜你正在尝试使用一种方法来填充字段值:

public class MyMath extends Homework {

   private int p;
   private String homeworkContent;

    public int pagesRead(){
       return p;
    }

    public String typeHomework(){
       return homeworkContent; // any text for the homework
    }

    public void createAssignment(int p, String homeworkContent){
      this.p = p;
      this.homeworkContent = homeworkContent;
   }
}

但是,请记住,您应该将方法从Homework更改为:

public abstract void createAssignment(int p, String homeworkContent);