Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java与子类共享父类var_Java_Android_Class_Subclass_Parent - Fatal编程技术网

Java与子类共享父类var

Java与子类共享父类var,java,android,class,subclass,parent,Java,Android,Class,Subclass,Parent,这是我在android项目中尝试做的一个例子: 我有一个动物类,它是作为父母的抽象类,狗和猫作为子类。 所有动物都有自己的位置。 我创造了一种新的动物,像这样: Animals oDog = new Dog(new Vector3(x,y,z)); 我想在Animals类中创建一个方法,如: public Vector3 getPosition(){ return mPosition; } 谁在返回动物位置,我不必在所有动物子类中重写相同的方法。 我不知道如何正确地执行此操作,即使这

这是我在android项目中尝试做的一个例子:

我有一个动物类,它是作为父母的抽象类,狗和猫作为子类。 所有动物都有自己的位置。 我创造了一种新的动物,像这样:

Animals oDog = new Dog(new Vector3(x,y,z));
我想在Animals类中创建一个方法,如:

public Vector3 getPosition(){
    return mPosition;
}
谁在返回动物位置,我不必在所有动物子类中重写相同的方法。
我不知道如何正确地执行此操作,即使这是可能的。

您可以创建一个抽象类,而无需创建任何抽象方法

只要你不把你的方法抽象化,它就应该是有效的

public abstract class Animal{

    private Vector3 position;

    public Animal(Vector3 pos){
        position = pos;
    }

    public Vector3 getPosition(){
        return mPosition;
    }
}

public class Dog extends Animal{

    public Dog(Vector3 pos){
        super(pos);
    }
}

public class Cat extends Animal{

    public Cat(Vector3 pos){
        super(pos);
    }
}

然后你可以在任何具体的动物子类上调用getPosition,你试过吗?在父类中定义一个方法,这样子类就可以继承它,这就是为什么可以有子类。事实上,我想知道的是,如果我创建一个动物实例,就像我在new Dog中所说的,即使动物是抽象的,我要创造的每只未来狗都会有自己的位置。抽象类可以有正常的完全实现的方法,也可以有不定义实现的抽象方法。getPosition完全放在那里是有意义的。您创建的每个对象都必须完全实现。对于某些方法,不能有没有实现的对象。因此,不管动物如何定义getPosition,狗必须有这种方法。如果不是,您将不得不再次使Dog抽象,但您无法再创建Dog对象,因为现在,您需要一个Dog的子类来实现其余的抽象方法。@zapl如果getPosition不是抽象方法,即在Animal中完全定义,则所有子类都不必重新定义它。问题已经存在一年多了:是,但在前50道题中,出于某种原因,它出现了:因为它因语法错误而被修改。无论如何,祝你好运被接受: