我在学java。我试图运行代码,但得到了这个错误:return type is incompatible。显示错误的代码的一部分。
class A {
public void eat() { }
}
class B extends A {
public boolean eat() { }
}
为什么会发生这种情况?
我现在正准备面试,有一个问题让我很困惑。人们说,在java构造函数中不能继承,但是这样的代码
public class childclass extends parentclass{
public childclass(){
super();
System.out.println("child");
}
public static void main(String[] args) {
childclass cc = new childclass();
}}
super()不意味着子类继承了父类的构造函数吗?
在Java中,重载方法和重写方法之间是否存在无人区?我试着在"overloaded“和"overridden”之间寻找空格。
在一个场景中,我在一个类中放置了两个方法,以便重载它们:
float my_method(int x, int y) {....}
int my_method(int x) {....}
然后,在另一个例子中,我修改了这些方法,并将它们放在两个具有层次关系的不同类中,以便使它们被覆盖:
void my_method(int x, int y, int z) {....}
void my_method(int x, int y, int z) {....}
我已经阅读了20多个与此相关的stackoverflow问题,但没有一个有效。
基本上,我有一个带有3个方法的服务抽象超类。Persist类似于模板方法,而save和update只有在需要时才会被覆盖。
public abstract class BaseService<E> implements ServiceImpl{
protected E save(E object, Class<E> returnedClass){//save object}
protected E update(E object){//update object}
当我们创建一个Java类(例如,从另一个类(例如A )继承的Java类)时,我们说我们的子类(B)扩展了超类(A)。这种行为在编程中被称为什么。简单地说,例如,当一个老师想给他们的学生看这个时,他们应该怎么说呢?例如,他们是否可以说“现在我从A继承B”、“我从A继承B”、“我使B扩展A”或“我从A继承B子类”?
附注:
例如,在以下Java代码中(在Android中):
public class customFragment extends Fragment {
public void Test(){
}
@Nullable
下面是一种静态方法:
public class Helper {
public static <T extends Number & Comparable<? super Number>> Boolean inRange(T value, T minRange, T maxRange) {
// equivalent (value >= minRange && value <= maxRange)
if (value.compareTo(minRange) >= 0 &&
我在理解super()的概念时遇到了麻烦。Java Tutorials给出了这个示例:
public class Superclass {
public void printMethod() {
System.out.println("Printed in Superclass.");
}
}
public class Subclass extends Superclass {
// overrides printMethod in Superclass
public void printMethod() {
s
Java 1.6.我扩展了一个类,包括一些方法。现在,我想使用扩展类来代替基类。但是,可以使用基类的类不能“识别”扩展类。(推荐的)修复方法是什么?
我知道这个被问了很多次,不同的口味,但我无法理解!
示例-扩展类SAMRecord并使用SAMRecordExt后缀:
public class SAMRecordExt extends SAMRecord{
public SAMRecordExt(SAMFileHeader header) {
super(header);
}
}
现在,虽然这样做是可行的:
SAMRecord rec= sam
我知道构造函数在java中是不可继承的,我们需要使用super() --超级必须是构造函数中的第一个语句。
但是为什么我不能使用@Override注释呢?
例如:
public class Foo extends Point2D.Double {
@Override // The annotation @Override is disallowed for this location
public Foo(){}
}
如果我有Foo的实例,我永远无法直接调用Point2D.Double.Double()!这种行为完全像重写一样!
我在两个不同的包里有亲子班。我正在重写一种受保护类型的方法。我想访问子类中的超类保护方法。
考虑以下代码:
package package1;
public class Super
{
protected void demoMethod()
{
System.out.println("In super method");
}
}
package package2;
import package1.Super;
public class Sub extends Super
{
@Override
protected
我正在尝试java,我似乎遇到了一些问题。我唯一的问题似乎是当我添加Stars类的扩展时,构造函数似乎是在我没有声明Stars test = new Star()的情况下被调用的;
Knight.java
import javax.swing.JOptionPane;
public class Knight extends Stars {
private String name;
private int health, battles, age, gold;
public Knight() {
name = JOptionPane.showInput
在这里学习Java,我尝试在超类上转换,而我不能访问子类方法,是否可能,我做错了什么。
我有这个:
public class Musician {
public String name;
public String surname;
}
public class Instrumentist extends Musician{
public String getInstrumento() {
return instrumento;
}
public void setInstrumento(String instrumento) {
假设我有两个类,名为"SuperClass“和SubClass。SubClass扩展了SuperClass。
我刚刚发现,SuperClass不可能有一个SubClass类型的实例变量。
也就是说,这是行不通的:
class SuperClass{
SubClass x = new SubClass();
}
因为它导致构造函数相互调用,进入永久循环。(因为Java自动输入对Super()的调用)
创建子类实例变量是不可能的,也是一个糟糕的设计思想吗?还是有什么工作要做?
我将一个Java类转换为kotlin,并得到了上面提到的超类型的直接参数不允许错误投影 Java类是 public class RecipeViewHolder extends ParentViewHolder {
private static final float INITIAL_POSITION = 0.0f;
private static final float ROTATED_POSITION = 180f;
@NonNull
private final ImageView mArrowExpandImageView;
private T
我真不敢相信我在这里找不到任何问题,所以:
为什么在派生类时需要显式定义超类的所有构造函数。为什么Java不自动调用超级构造函数,而派生类不提供带有该签名的构造函数。
那将是一片不错的“句法糖”。
在Android中,每个View子类都提供了3个构造函数,它们要么从XML调用,要么从代码调用。为了能够在代码和XML中创建自定义视图,我需要定义所有三个构造函数,即使它们什么也不做。下面是我的一个小例子
public class OverfocusableGridView extends GridView {
public OverfocusableGridView(Context co
我对Java中的继承没有一个清晰的概念。例如,我有:
class A
{
...
public void MethodA();
}
现在一切都很清楚了。然后我想要一个(Sub)类:
class B extends A
{
...
public void MethodB();
}
然后,我创建了一个A实例。然后,我想从A获取一个包含所有内容的B实例。我想做一些像aA = new B();这样的东西,但是得到了一个错误。
使用这个东西并不是很舒服:
A aA = new A(...);
B aB = new B(null,null,...);
aB = aA
一般来说,我对JAVA和OOP是个新手。在这段非常简单的代码中,为什么我必须从超类中调用onCreate方法?它不是从超类继承的吗?我知道构造函数方法没有继承到子类,如果你想调用构造函数,你必须调用超类。super.onCreate是构造函数调用吗?构造函数名不一定要和类名相同吗?我知道这是一个愚蠢的问题,谢谢你的回复。
import android.app.Activity;
public class MainActivity extends Activity {
/** Called when the activity is first created. */
@Over