Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.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 如何在主类的对象上使用扩展类的方法?[爪哇]_Java_Android_Class_Android Studio_Extends - Fatal编程技术网

Java 如何在主类的对象上使用扩展类的方法?[爪哇]

Java 如何在主类的对象上使用扩展类的方法?[爪哇],java,android,class,android-studio,extends,Java,Android,Class,Android Studio,Extends,我从开发一些东西开始,我有几个类使用相同的方法,所以我想把它放在一个类中(以便在一个地方轻松修复)。问题是我不知道如何在主类的对象上使用不同类的方法。解释代码: 公共A类扩展C类{ 公用设备; device=UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()); 公开无效测试(){ methodFromC(); } } 公共B级扩展到C级{ 公用设备; device=UiDevice.getInstance(Ins

我从开发一些东西开始,我有几个类使用相同的方法,所以我想把它放在一个类中(以便在一个地方轻松修复)。问题是我不知道如何在主类的对象上使用不同类的方法。解释代码:

公共A类扩展C类{
公用设备;
device=UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
公开无效测试(){
methodFromC();
}
}
公共B级扩展到C级{
公用设备;
device=UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
公开无效测试(){
methodFromC();
}
}
公共C类{
受保护的void methodFromC(){
装置。某物();
}

}
您可以使用
super
关键字访问所扩展类中的任何内容。就你而言:

public class B extends C {
public UiDevice device;

device = super.methodFromB();

public void test(){
    methodFromB();
}
}

您可以使用
super
关键字访问所扩展类中的任何内容。就你而言:

public class B extends C {
public UiDevice device;

device = super.methodFromB();

public void test(){
    methodFromB();
}
}

如果您的许多类声明了做同样事情的方法,那么您可以让它们从一个类继承,让我们称之为class A。在类中声明并实现该方法。然后在子类中声明方法,并在其主体中写入:

super.nameOfYourMethodFromParentClass();

通常,要使用来自不同类的方法,只需创建该类的对象并对其调用方法。比如:

class A {
    public void myMethod() {
        B b = new B();
        b.methodFromB();
    }
}

说到继承,请注意以下几点: 可以创建声明此方法的类的对象,也可以创建从声明此方法的类继承的类的对象,并在此对象上调用该方法

比如: 类A继承自C。在类C中声明了methodFromC()方法。要在类A的对象上调用类C的方法,可以执行以下操作:

A a = new A();
a.methodFromC(device);
这里调用的方法是C类中的方法


但如果在类A中重写类C中的方法(这意味着在类A中声明的方法与类C中的方法具有相同的名称和参数),那么通过执行我上面编写的代码,您将调用类A中的方法,而不是类C中的方法。

如果您的许多类声明的方法具有相同的功能,您可以使它们从一个类继承,我们称之为类A。在类中声明并实现该方法。然后在子类中声明方法,并在其主体中写入:

super.nameOfYourMethodFromParentClass();

通常,要使用来自不同类的方法,只需创建该类的对象并对其调用方法。比如:

class A {
    public void myMethod() {
        B b = new B();
        b.methodFromB();
    }
}

说到继承,请注意以下几点: 可以创建声明此方法的类的对象,也可以创建从声明此方法的类继承的类的对象,并在此对象上调用该方法

比如: 类A继承自C。在类C中声明了methodFromC()方法。要在类A的对象上调用类C的方法,可以执行以下操作:

A a = new A();
a.methodFromC(device);
这里调用的方法是C类中的方法


但如果在类A中重写了类C中的方法(这意味着在类A中声明了一个与类C中的方法具有相同名称和参数的方法),那么通过执行我上面编写的代码,您将调用类A中的方法,而不是类C中的方法。

首先,作为一名初级程序员,除非您是为学校做的,避免扩展类。它最终会变成一团意大利面条,直到你学会控制它(我很喜欢这一次),你现在试图做的不是好代码

我想你想做的是这样的:

(假设未指定的代码保持原样)

此模式允许您从父类中的访问某些内容

B也可以有自己的设备。我相信这就是你所追求的(C能够在A的设备或B的设备上操作取决于哪个扩展C)


摆脱公共变量。

首先,作为一名初级程序员,除非你是为学校做的,否则要避免延长课程。它最终会变成一团意大利面条,直到你学会控制它(我很喜欢这一次),你现在试图做的不是好代码

我想你想做的是这样的:

(假设未指定的代码保持原样)

此模式允许您从父类中的访问某些内容

B也可以有自己的设备。我相信这就是你所追求的(C能够在A的设备或B的设备上操作取决于哪个扩展C)


去掉公共变量。

RTFM……….您的代码甚至无法编译,因此无法提出适当的建议。类C使用设备,但设备既不是实例变量,也不是方法参数。如果您认为C类需要UiDevice才能工作,那么它应该是一个实例变量。如果methodFromC只需要UiDevice,它应该是方法参数的一部分。RTFM……….您的代码甚至无法编译,因此无法提出适当的建议。类C使用设备,但设备既不是实例变量,也不是方法参数。如果您认为C类需要UiDevice才能工作,那么它应该是一个实例变量。如果methodFromC只需要UiDevice,它应该是方法参数的一部分。