我对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.
   }
}

09-03 20:28