接口的目的仍在继续

Jul*_*lio 6 java oop interface

好的,我认为接口是一种强制对象实现一定功能的方法,而不必使用继承.有点像合同.我半看到了他们的观点.

但是,如果您在界面中拥有的是:

 public interface animal{
  void eat(object food);
}
Run Code Online (Sandbox Code Playgroud)

并且没有这样的实现,那么每次使用你的界面的人都必须从头开始编写它.

如果你要创建一些所有实现这些功能的类,并且实现只是略有不同,那将是一项艰苦的工作.

任何帮助我解决这个问题都是值得赞赏的,因为我知道这非常重要.

And*_*anu 20

接口是在Java中创建多重继承的唯一方法.

假设你创建一个类Animal.包括人类在内的所有动物都延伸到这一点 这些动物中的每一种都继承了常见的方法,如吃,呼吸等.

但现在让我们说你有一MathProblem堂课.并且您希望通过将问题传递给solve(MathProblem problem)方法来使某些类可以解决该问题.你知道Human,但也Computer可能解决数学问题.所以他们都需要能够解决这个问题.您可能能够让计算机扩展一些MathSolver具有该方法的类,但Human已经扩展了Animal,并且无法扩展其他任何内容.所以,更好的办法是让MathSolver的接口,并兼得Human,Computer以及需要解决的问题的任何其他类实现这一点.

还要注意,a Human和a Computer可能以完全不同的方式解决问题,因为它们具有不同的对象.这就是接口最适合的.定义跨越多个继承层次结构的某些功能,并且可以具有非常不同的实现,但是都可以传递给接受其中任何一个的方法.想想Comparable界面; 它不是特定类别的对象所具有的东西,所有类型的东西都可以进行比较,并且通常以非常不同的方式进行比较.但是,你可以随时拨打排序上ListComparable对象,因为你知道他们有一定的顺序,不管他们是Numbers,Animals,Computers或其他任何东西(只要它们实现Comparable并定义它们的顺序).

  • +1 - 我认为重要的是要说继承有两个目的:(1)允许继承类对象代替基类对象,(2)允许继承类对象使用base - 阶级行为.接口对第二个目的没有任何用处,但对第一个目的非常有帮助. (2认同)