0

私はまだJavaに慣れていないので、まだ混乱している概念がいくつかあります。メインクラスからストラマークラスでバイブレーションを実行したいと思います。vibrate メソッドは抽象メソッドであるため、メイン クラスに存在できません (私は想定しています)。メインクラスからこのメソッドを呼び出したいのですが、「非静的メソッドへの静的参照」エラーが発生するため、方法がわかりません。これが機能しない理由については非常に基本的な考えがありますが、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);

 }
4

4 に答える 4

1

まず、Strummer 抽象クラスであるため、直接インスタンス化することはできません。Strammer の抽象メソッドをオーバーライドするMyStrummer extendsなどのサブクラスを作成する必要があります。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.
   }
}
于 2013-05-15T12:27:22.223 に答える
0

Stummer ob = new Your_class_Name () ;

// =メソッドが作成されるYour_class_Name内部playTheSound()

ob.playTheSound() ;

于 2013-05-15T12:39:33.247 に答える
0

抽象クラス内でメソッド抽象を宣言する場合、抽象クラスを継承するクラスは抽象メソッドを実装する必要があります。以下の例:

public abstract class strummer
{
    public abstract void vibrate(long[] pattern, int repeat);
}

public class yourClass extends strummer
{
   public void playTheSound()
   {
      this.vibrate();
      ...
   }


   // The vibrate method MUST be implemented here
   // since we inherited from an abstract class!
   public void vibrate(long[] pattern, int repeat)
   {
      // write vibrate method here.
   }

}
于 2013-05-15T12:27:47.943 に答える