2011-02-15 62 views
1

我是初学者。对不起。我该如何解决这个Java继承练习?

为了解决这个问题,我正在绞尽脑汁。

任何帮助将不胜感激。

非常感谢你

...................................... ..........................................

定义两个类,在Java中称为MyBaseClass和MyDerivedClass。

前一个类声明了一个名为meth()的受保护抽象方法,该方法具有非参数并返回一个整数值。

后者类扩展的第一个和通过返回值5

实现继承的方法........................ ...............................

我的实现是(我知道这是错误的,但对不起,我不知道为什么..):

public MyBaseClass { 

    protected abstract meth(); 
    return(); 
} 

public MyDerivedClass extends MyBaseClass { 

meth(); 
return (5); 

} 

回答

2

您的实现缺乏Java中的基本原则。也许你应该先学习如何在Java中声明一个方法/类。不过这里是正确的解决方案:

抽象类:

public abstract MyBaseClass { 
    protected abstract int meth(); 
} 

的子类:

public MyDerivedClass extends MyBaseClass { 
    @Override 
    protected int meth() { 
     return 5; 
    } 
} 
+0

您应该声明MyBaseClass抽象,以便它不能直接实例化吗?它没有用作对象。 – ComethTheNerd 2011-02-15 09:38:14

+1

谢谢。首先,我忘记了变量类型int,其次我试图覆盖meth方法时犯了一个大错误。是@Override 是强制性的吗? – QJ746 2011-02-15 09:38:53

+0

不,它是一个静态检查添加到正常的,只是帮助你发展(并避免错别字) – Jack 2011-02-15 09:39:53

5

这听起来像一个大缺乏了解什么是类可以包含如何OOP一般工作。你在类里面有什么是方法和变量,而不是代码的声明。

很明显meth();是一个声明,确实是一个函数的调用。当你正在寻找的是实现抽象方法:

public abstract class MyBaseClass { 
protected abstract int meth(); 
} 

public class MyDerivedClass extends MyBaseClass { 
protected int meth { return 5; } 
} 

看:每个类别的{ }封闭包含的方法由(如protected int meth())的签名定义的列表和体内过多身体(除非abstract)。变量也是允许的。

但恕我直言,你应该更加专注于学习OOP基础知识和编程基础,然后再深入研究继承......并且始终记住:在完整的面向对象编程语言(如Java)中,语句不能驻留在方法体外。

1
public abstract class MyBaseClass{ 

protected abstract int meth(); 


} 

public class MyDerivedClass extends MyBaseClass{ 

protected int meth(){ 
return 5; 
} 

}