我对Java还是很陌生,有些概念仍然使我感到困惑。我想在我的主要班级的大学生班上振动。振动方法在我的主类中不能存在,因为它是一种抽象方法(我认为)。我想从我的主类中调用此方法,但由于我收到“对非静态方法的静态引用”错误,因此我不确定如何使用。对于这个为什么不起作用,我有一个非常基本的想法,但是我需要知道如果在playTheSound方法中不起作用,您将如何调用该方法。
继承人代码
public void playTheSound() {
// set up MediaPlayer
MediaPlayer mp = new MediaPlayer();
switch (i) {
case 1:
mp = MediaPlayer.create(this, R.raw.cmaj);
mp.start();
strummer.vibrate(pattern, repeat);
break;
}
}
}
abstract class strummer {
public abstract void vibrate (long[] pattern, int repeat);
}
最佳答案
首先,Strummer
一个抽象类,因此您不能直接实例化它。您必须创建一个子类,比如说MyStrummer
扩展Strummer
,它将覆盖Strummer中的所有抽象方法。
public abstract class Strummer
{
public abstract void vibrate(long[] pattern, int repeat);//This is only the signature.
}
public class MyStrummer extends Strummer
{
public void playTheSound() {
this.vibrate();
//Do your stuff over here
}
public void vibrate(long[] pattern, int repeat){//Overriding the method
//Write vibrate method details here.
}
}