黑马程序员技术交流社区

标题: 今天刚学了接口,有两个问题没明白,希望能点通。 [打印本页]

作者: dandan225110    时间: 2016-3-18 23:02
标题: 今天刚学了接口,有两个问题没明白,希望能点通。
今天学习了接口。我的理解是:接口就是规定了一个方法,我们按照这个标准来实现方法。但有个问题也随之在我脑海中出现,为何要调用接口,我们直接在类里面写出方法就好了,省去了那么麻烦的一步。
问题2:现在做调用方法的题我脑子里都会过一遍内存图,但常量运算在内存哪里?比如 int a = 1; int b =2; int c = a+b; 这个过程实在内存哪里完成的呢?
作者: debuggerx01    时间: 2016-3-19 05:12
首先,接口有着类似于抽象类的好处,可以使实现这个接口的每个类都“不得不复写其中的方法”,使得整个项目中的每一个对象都不至于在代码编写阶段“遗忘实现功能的BUG”,提高了开发的效率(否则你可能要到测试调试阶段才能发现自己的粗心,回来返工是一种很大的浪费),这是一种把UncheckException转化为CheckException的思维方式。另外,使用接口的对象在实际使用时就可以通过向上转型,实现“操作接口实现类对象自己的方法”,这样可以大大简化控制代码(相应要增加的是判断代码)。我的理解是,这些东西必须要放到“面向对象”的思维里去认识其价值,尤其要考虑到“对象很多”,“环境很复杂”,“环境不安全”,“需求会变化”等等情况。
另外,计算过程没有“在内存中完成”的说法,内存说到底是存储介质,有的是栈内存堆内存方法区常量池这些东西,计算都是靠的CPU,只不过有从哪里取值,需不需要开辟内存的区别就是了
作者: hjh987099654    时间: 2016-3-19 08:49
1、首先一点这是面向对象的思维,多个类去实现同一接口可以让实现接口的类都统一标准,就是大家都知道这个是做什么的,但是具体不用知道具体怎么做。其次,使用接口的对象在实际使用时就可以通过向上转型,实现“操作接口实现类对象自己的方法”,这样可以大大简化控制代码
2、常量都存在常量池,而实现像 int a = 1; int b =2; int c = a+b; 这些给变量附值的操作是在堆中完成的。当创建完对象后 ,在堆对变量初始化。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2