【问题标题】:Difference between run time and compile time determination [duplicate]运行时间和编译时间确定之间的差异[重复]
【发布时间】:2015-07-19 04:27:45
【问题描述】:

我创建了一个接口和一个堆栈。现在我可以通过该接口的引用或直接调用堆栈。我无法理解为什么我应该采取参考路线。 我所指的书说它的运行时实现,所以它更好。谁能解释一下

【问题讨论】:

  • 你需要了解动态多态性。最好贴一些伪代码,而不是用简单的英语解释。

标签: java runtime compile-time


【解决方案1】:

我不确定你所指的实际代码,但使用接口的好处是这样的。

interface Stack {
  void push (T x);
  T pop ();
}

class IntegerStack implements Stack<Integer> {

}

如您所见,我们可以为每种类型准备 Stack 以接受每种需要的类型,但也可以通过相同的接口访问它。实际上,这个决定,通过接口调用哪个实现方法,是由编译时做出的,所以我不确定它是否能回答你的问题。

如果你知道你只坚持一个实现,那么使用接口是没有用的。 (但很少有软件被开发为实际用途)

顺便说一句,如果您正在实施 Stack,我相信使用更知名的 interface 比自己实施更好。 ;)

【讨论】:

  • 我的意思是我在接口中创建并用它实现两个类。然后我分别创建了两个类的对象,现在我可以通过接口引用调用它们,而不是通过对象调用它们的方法。在什么情况下使用哪个? public class stackdemo { public static void main(String args[]) { shell1 s; //Interface A ob1= new A(); B ob2= new B(); s=ob1; ob1.fixed(10); ob2.init(15); s.push(5); // Calling via interface s.push(3); s.pop(); ob2.push(11);// Direct calling through object ob2.pop(); } }
  • 想想另一个里面有你的堆栈的类。新类可以通过堆栈接口保存A 堆栈或B 堆栈。 (从你的例子,它shell1
猜你喜欢
  • 2014-07-20
  • 2018-07-24
  • 2016-09-18
  • 2015-04-10
  • 1970-01-01
  • 2011-08-15
  • 2018-06-21
  • 2010-12-29
  • 2013-02-24
相关资源
最近更新 更多