为什么使用接口不用实现类
发布网友
发布时间:2023-09-14 18:36
我来回答
共5个回答
热心网友
时间:2024-12-03 03:31
面向对象是解决软件需求的变化而产生的,他的目的就是让需求变化时软件的改动达到最小化。如果只是一个IA接口,一个AClass类,IA接口就是多余的,你直接用实现类就可以了。
如果又来了一个BClass,也需要toString()方法。
用实现类可能忘了在BClass中定义toString()方法,但让BClass实现IA接口,就必须在BClass中实现toString()方法,不然编译不通过,这是接口的第一个好处:强制实现。
如果要把IA ia = new AClass();换成new BClass();
用实现类需要修改两行,AClass a = new AClass();换成BClass b = new BClass();,a.toString(); 换成b.toString();
用接口只需要修改一行,IA ia = new AClass();换成IA ia = new BClass();
而IA.toString();是不需要修改的,这是接口的第二个好处:抽象行为。
热心网友
时间:2024-12-03 03:31
首先要说的是你的接口写的是错的,应该是
Interface IA //接口
{ string toString(); }
接口中是不会定义方法的修饰符的。
接口其实就是类和类之间的一种协定,一种约束,是一种通信约束。接口中所有的方法否是抽象的。
因为子类继承的是父类的借口,所以我们可以用子类去实例化这个父类,然后就可以直接去调用接口中的方法,当然了,方法的实现还是在子类中的。
继承接口的子类中可能会有除了接口定义之外的方法,使用IA ia = new AClass();这种方式实例化的时候是调用不到接口之外的方法的。
希望我的回答对你有帮助
热心网友
时间:2024-12-03 03:32
呵呵,楼上几位说的那些好处我就不在重复了。
"IA ia = new AClass();"其实这句话如果只是放在代码里面看,我个人认为作用确实不大,但是楼主可以设想一下,假如说,我们现在有一个项目,需要50个人来合作开发,那"IA ia = new AClass();"这句话的意义就会体现出来:
1:在开发的过程中,任务的分配一般来说是很明确的,设计人员可能只给你几个类让你去做,但是又要求你必须要实现他要的方法(为了让他人使用)。
2:我开发我的模块时,我不需要知道别人的类是怎么实现的,别人做的类只要实现我要的方法即可.
3:这样一来"IA ia = new AClass();"这个方法放在这个环境里面,那它的作用就体现的淋漓尽致了。
希望楼主细细体会。
热心网友
时间:2024-12-03 03:32
因为一个接口由于参数的个数、类型不同,可以实现多种功能。
而类要实现则比较困难。
就比如说类是一个电话,而接口是一个接线员。只是指向那个电话,当你需要其他电话的时候,就费劲 了。但是如果你指向的是接线员,告诉他我要哪哪哪,那就方便多了。
热心网友
时间:2024-12-03 03:33
简单的说就是为了约束一下,接口中定义的方法实现类中必须全部实现
但是如果你只用实现类的话,项目中本该有的方法你有可能就会忘记实现