如何在Java中同时使用多态与继承和接口?

时间:2017-09-28 01:13:56

标签: java inheritance interface polymorphism

假设我有一个扩展另一个类并实现一个或多个接口的类。如何指定需要此类条件的类型?

例如:

class Eagle extends Animal implements Fly {
}

class Falcon extends Animal implements Fly {
}


public static void main (){
    ??? anAnimalWhoCanFly; 
}

更新:我删除了列表。假设我想要一个对象,它是扩展Animal并实现Fly的类的对象。

由于

2 个答案:

答案 0 :(得分:2)

如果你想要一种方法来指定,例如,"扩展Animal 的类型实现Fly",只需定义一个完全符合的类:

<?php

$con = mysqli_connect("localhost", "root", "", "mydb");
if(!$con) {
    die('not connected');
}
$con = mysqli_query($con, "SELECT * FROM scoreboard");

?>
<center>
  <div>
    <center><td><h2>View Score</h2></td></center>
    <table border="2">
        <th>ID</th>
        <th>VALUE 1</th>
        <th>VALUE 2</th>
        <th>VALUE 3</th>
        <th>VALUE 4</th>
        <th>VALUE 5</th>
        <th>AVERAGE SCORE</th>
      </tr>
<?php

while($row = mysqli_fetch_array($con)) {

?>
      <tr>
        <td><?php echo $row['id']; ?></td>
        <td><?php echo $row['score1']; ?></td>
        <td><?php echo $row['score2']; ?></td>
        <td><?php echo $row['score3']; ?></td>
        <td><?php echo $row['score4'] ;?></td>
        <td><?php echo $row['score5'] ;?></td>
        <td><?php echo $row['average'] ;?></td>
      </tr>
<?php

}

?>
    </table>
  </div>
</center>

现在,public abstract class FlyingAnimal extends Animal implements Fly{ } Eagle从[{1}}延伸,而不是直接从Falcon延伸:

FlyingAnimal

现在你可以这样做:

Animal

答案 1 :(得分:0)

令人遗憾的是,如果@EvgenyTanhilevich是对的,我们不能在java中这样做。

我找到了某种方式可以做我想要的东西。这不是我想要的,因为它不需要该对象必须是实现Fly的类的实例,但仍然让我调用fly函数:

public class Main  {

    public static void main(String[] args) {

        Eagle eagle = new Eagle(); 
        ((Fly)eagle).fly();

    }

}