Specializing method arguments in subclasses in Java

后端 未结 2 577
[愿得一人]
[愿得一人] 2021-01-12 16:42

Consider the following situation:

public abstract class AnimalFeed{
}
public class FishFeed extends AnimalFeed{
}
public class BirdFeed extends AnimalFeed{
}         


        
2条回答
  •  暗喜
    暗喜 (楼主)
    2021-01-12 17:22

    You'd need to add a type variable to the class:

    public abstract class Animal {
      public abstract void eat(F somethingToEat);
    }
    

    Then you can declare your subclasses as wanting a particular type of AnimalFeed:

    public class Bird extends Animal {
      public void eat(BirdFeed somethingToEat) {}
    }
    
    public class Fish extends Animal {
      public void eat(FishFeed somethingToEat) {}
    }
    

提交回复
热议问题