A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

今天学习了接口。我的理解是:接口就是规定了一个方法,我们按照这个标准来实现方法。但有个问题也随之在我脑海中出现,为何要调用接口,我们直接在类里面写出方法就好了,省去了那么麻烦的一步。
问题2:现在做调用方法的题我脑子里都会过一遍内存图,但常量运算在内存哪里?比如 int a = 1; int b =2; int c = a+b; 这个过程实在内存哪里完成的呢?

2 个回复

倒序浏览
首先,接口有着类似于抽象类的好处,可以使实现这个接口的每个类都“不得不复写其中的方法”,使得整个项目中的每一个对象都不至于在代码编写阶段“遗忘实现功能的BUG”,提高了开发的效率(否则你可能要到测试调试阶段才能发现自己的粗心,回来返工是一种很大的浪费),这是一种把UncheckException转化为CheckException的思维方式。另外,使用接口的对象在实际使用时就可以通过向上转型,实现“操作接口实现类对象自己的方法”,这样可以大大简化控制代码(相应要增加的是判断代码)。我的理解是,这些东西必须要放到“面向对象”的思维里去认识其价值,尤其要考虑到“对象很多”,“环境很复杂”,“环境不安全”,“需求会变化”等等情况。
另外,计算过程没有“在内存中完成”的说法,内存说到底是存储介质,有的是栈内存堆内存方法区常量池这些东西,计算都是靠的CPU,只不过有从哪里取值,需不需要开辟内存的区别就是了
回复 使用道具 举报
1、首先一点这是面向对象的思维,多个类去实现同一接口可以让实现接口的类都统一标准,就是大家都知道这个是做什么的,但是具体不用知道具体怎么做。其次,使用接口的对象在实际使用时就可以通过向上转型,实现“操作接口实现类对象自己的方法”,这样可以大大简化控制代码
2、常量都存在常量池,而实现像 int a = 1; int b =2; int c = a+b; 这些给变量附值的操作是在堆中完成的。当创建完对象后 ,在堆对变量初始化。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马