Java 如何从扩展回调抽象类
所以我必须创建一个类来扩展一个抽象类,并列出作业类型和正在使用的页面。然而,我不完全理解如何在正确使用createAssignment创建作业的同时返回阅读的页面和作业类型。这是我到目前为止所做的,但它似乎不起作用。感谢您的帮助Java 如何从扩展回调抽象类,java,extends,Java,Extends,所以我必须创建一个类来扩展一个抽象类,并列出作业类型和正在使用的页面。然而,我不完全理解如何在正确使用createAssignment创建作业的同时返回阅读的页面和作业类型。这是我到目前为止所做的,但它似乎不起作用。感谢您的帮助 public abstract class Homework { public abstract int pagesRead(); public abstract String typeHomework(); public abstract vo
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";
}
}
您的代码已使用语法修复程序重新格式化:
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";
}
}
您还必须实现另外两个抽象方法
分配给方法的参数是没有意义的:-)我想你应该把它们分配给MyMath
实例中的变量
我还没有测试过。这有帮助吗?我编辑了两个程序,只将其中一个程序抽象化,但不起作用,因此它们都是抽象的,createAssignment现在无效。现在可以了。谢谢你们的格式化指针
public abstract class Homework
{
public abstract int pagesRead();
public abstract String typeHomework();
public abstract void createAssignment(int p);
}
}考虑到你的最后一个问题和这个问题,你显然不理解抽象的概念 定义
公共抽象void createAssignment(int p)时
在你的作业
类中,你说“任何扩展这个类的具体类(读而不是抽象类)都应该实现这个方法”,但在具体类中,你又尝试使用抽象
关键字实现相同的方法,只是使用了不同的签名,这是错误的
删除摘要
关键字并更改签名:
public void createAssignment(int p, String t) {
p = 5;
t = "Math";
}
或实现抽象方法:
@Override
public void createAssignment(int p) {
}
请记住,您必须实现在
作业
中定义的所有抽象方法,除非您也将MyMath
抽象化。如果您只是重载它,则执行createAssignment(int p)
“再次”将被计算在内。这非常简单,伙计:
首先,您需要实现抽象方法:
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;
}
}
但是,请记住,您应该将方法从家庭作业改为:
public abstract void createAssignment(int p, String homeworkContent);
java是区分大小写的尝试在相同的情况下创建抽象类名首先应该从MyMath中的方法签名中删除
abstract
。此代码不编译,请查看createAssignment
的方法签名。它也不会覆盖超类中的参数(2个参数)。另外:超类中的所有方法都是抽象的,所以你必须在子类中实现它们。请重新格式化你的代码:-)是的!事实上,我只是想出来了,并发布了我自己的答案,这与你发布时的答案非常相似。感谢您的帮助。createAssignment
的签名不匹配。它只起作用,因为您还制作了MyMath
摘要。您不会覆盖任何方法,甚至createAssignment
。
public abstract void createAssignment(int p, String homeworkContent);