当前位置:编程学习 > JAVA >>

关于接口的问题(C#/java)

我在C#和java中都遇到这情况    当我把接口删了后 程序还是照常运行,结果也一样,我知道在实现接口的时候  把接口里面的方法等都从新写了一遍 当然可以运行  但是为什么要用接口呢

 

答案:
1、C#接口的作用 :

C#接口是一个让很多初学C#者容易迷糊的东西,用起来好像很简单,定义接口,里面包含方法,但没有方法具体实现的代码,然后在继承该接口的类里面要实现接口的所有方法的代码,但没有真正认识到接口的作用的时候就觉得用接口是多此一举,当然你这样想那是绝对绝对错误的,比尔盖茨的微软请的员工都是比盖茨还聪明的人,他们的C#能添这样的多足吗?!关于接口的作用,网上有一位就真的深入浅出给我们做了很好理解的分析。
我们定义一个接口
public interface IBark
{
void Bark();
}
再定义一个类,继承于IBark,并且必需实现其中的Bark()方法
public class Dog:IBark
{
public Dog()
{}
public void Bark()
{
Consol.write("汪汪");
}
}
然后,声明Dog的一个实例,并调用Bark()方法
Dog 旺财=new Dog();
旺财.Bark();
试想一样,若是想调用Bark()方法,只需要在Dog()中声明这样的一个方法不就行了吗,干什么还要用接口呢.因为接口中并没有Bark()具体实现.真的实现还是要在Dog()中.那么使用接口不是多此一举吗?
还有人是这样说的:从接口的定义方面来说,接口其实就是类和类之间的一种协定,一种约束.还拿上面的例子来说.所有继承了IBark接口的类中必需实现 Bark()方法.那么从用户(使用类的用户)的角度来说,如果他知道了某个类是继承于IBark接口,那么他就可以放心大胆的调用Bark()方法,而不用管Bark()方法具体是如何实现的.比如,我们另外写了一个类.
public class Cat:IBark
{
public Cat()
{}
public void Bark()
{
Consol.write("喵喵");
}
}
当用户用到Cat类或是Dog类的时候,知道他们继承于IBark,那么不用管类里的具体实现,而就可以直接调用Bark()方法,因为这两个类中肯定有关于Bark()方法的具体实现.

如果我们从设计的角度来看.一个项目中用若干个类需要去编写,由于这些类比较复杂,工作量比较大,这样每个类就需要占用一个工作人员进行编写.比如A程序员去定Dog类,B程序员去写Cat类.这两个类本来没什么联系的,可是由于用户需要他们都实现一个关于"叫"的方法.这就要对他们进行一种约束.让他们都继承于IBark接口,目的是方便统一管理.另一个是方便调用.当然了,不使用接口一样可以达到目的.只不过这样的话,这种约束就不那么明显,如果这样类还有Duck类等等,比较多的时候难免有人会漏掉这样方法.所以说还是通过接口更可靠一些,约束力更强一些.
接口是一种标准和规范,在团队做项目的时候很实用的 !
他是一种标准和规范,在你学深了 大部分项目都是用接口搭建框架的,

他在团队合作开发中 应用很广泛 ,我自己的理解 接口 - 不同对象在同一场合 实现不同行为

这个你不用着急 慢慢接触的多了 自己就会有很多体会了
好复杂。。。。郁闷。。。。好想快点升大学
接口就是让实现它的类有一个统一的规范。统一由什么属性和方法。
接口就是一组规范
它规范了 定义者 与 调用者之间的一些东西

简单说接口 就是一种调用 多种实现
接口:定义这个项目需要什么功能(框架),然后程序员在实现各个接口
一款好的应用软件都是面向接口编程的,系统架构师设计好所有的接口,构建好软件的边界与结构,就像打好的房子主体架构一样。再由类实现接口详细实现功能。由于C#是纯面向对象的语言,和Java一样单根继承,接口可以看作是单根继承的扩展。没有接口,当然能行,就草棚只需要几根木棍一样。要建楼房没有结构是不行的。另外,接口也是多态的实现。
接口这么跟你说吧,cpu与主板之间就是采用那个针孔接口,他们之间通过接口连在一起,这样的好处就是低耦合,cpu坏了不会影响主板,换个cpu就行了。在程序中体现的就是各个模块之间的低耦合性,方便扩展。其实就是定义一个规范协议,每个实现接口的类都可以采取自己的方式来实现。这样很大的程度的体现了程序的灵活性。
可能是你虽然定义了接口,但,还是直接用类创建的对象

接口是一中规范,

假如一个方法有不同的实现的话,可以通过修改接口指向的方法来改变方法的实现.

interface A

{

 say();

}

class B:A

{

say()

{

console.write("B的方法");

}

}

class C:A

{

say()

{

console.write("C的方法");

}

}

如果要B的实现的话就:

A a=new B();

a.say();

要C:

A a=new C();

a.say();

建议看下相关的Pet Shop 4.0

然后来理解B是MSsql的实现,C是Oracle的实现,就容易理解多了.

 

接口和抽象类,都是为了对实现类的泛化,使其按照约束的运行,例如在支付平台,就是实现金融的接口

上一个:JAVA OOP上溯造型有什么好处
下一个:求Java的一个最简单程序!

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,