抽象类与接口的区别

接口是对动作的抽象,抽象类是对根源的抽象。接口可以说是动作的集合。抽象类是形容某种事物的,比如说人,人的抽象类中是些形容人的一些属性和方法,男人女人继承了人的抽象类,所以他们可以统称为人。

人可以走路,狗也可以(四条腿也算走路吧),走路这个动作就可以放在接口中,让继承这个接口的类去实现。

相同点:

    不能被实例化

    都可以包含抽象的方法,这些方法不能在抽象层中实现。

不通点:

    抽象类中可以包含抽象的方法和非抽象的方法。而接口中只能包含抽象的方法。抽象类中包含非抽象的方法意义:当继承此抽象类的所有子类都要事先一个一样的方法时,这个方法就可以放在抽象类中去实现,避免在子类中重复的去写他们,增加了代码的复用性。

    一个类只能继承一个抽象类,而可以去继承多个接口。

    接口中基本数据类型是static ,而抽象类不是。

到底是定义接口还是定义抽象类,看你关注的是一个事物的本质还是关注一个事物的动作,如果关注的是本质买那就定义抽象类,关注动作就定义接口。

抽象类的功能要远超过接口,但是,定义抽象类的代价高。因为高级语言来说(从实际设计上来说也是)每个类只能继承一个类。在这个类中,你必须继承或编写出其所有子类的共同属性和方法。而类可以继承都个接口,因此,你只要将特定的方法抽象到这个接口就好。接口的设计具有扩展性,而设计抽象类时就需要谨慎一些。

    

抽象类接口区别与联系

05-02

抽象类与接口都可以定义一种访问的约束或规则rnrnrn--------------------------------------------------------------------------------rnrn抽象类多用于在同类事物中有无法具体描述的方法的时候,为了使该同类事物中的该方法能够统一,不致混乱,可将该方法声明为抽象方法,同时则把该类声明为抽象类。rnrn特点:同类事物中,各个子类对该方法的描述不一致,为了便于外界统一访问,则对该方法进行约束。rnrnrn--------------------------------------------------------------------------------rnrn接口多用于不同类事物之间,定义不同类之间的通信规则。如某资源要访问多个不同的类,为了使该资源能统一进行访问,不致混乱,可以为这些要被访问的类定义一个统一的接口,则该资源就能通过该接口对这些不同的类进行统一的调用。rnrn特点:为不同类的事物,定义一个便于外界统一访问的规则。或者说当不同类事物具有某种相同的功能,并且不同类对该功能的描述不一致时,则可将该功能定义为接口。rnrnrn--------------------------------------------------------------------------------rnrn举例说明:rnrn抽象类:所有的图形都具有一个求面积getArea()的方法,但是每个图形都有不同的描述,为了使外界(Outside)能统一访问该方法,则将该方法声明为抽象方法,并且包含在一个抽象类Shape中,并使其他的具体的图形类继承这个抽象类。rnrnabstract class Shape rn abstract int getArea(); rn rn rnclass Circle extends Shape rn public int getArea() rn //具体的实现 rn rn rn rnpublic class Outside rn public static void access(Shape object) rn object.getArea(); rn rn rn public static void main(String[] args) rn Circle c = new Circle(); rn access(c); rn rn rnrnabstract class Shape rn abstract int getArea();rnrnrnclass Circle extends Shape rn public int getArea() rn //具体的实现rn rnrnrnpublic class Outside rn public static void access(Shape object) rn object.getArea();rn rn rn public static void main(String[] args) rn Circle c = new Circle();rn access(c);rn rn rnrn接口:电脑(资源)要访问mp3的存储器,U盘的存储器一起其他的一些外设的存储器(不同类的事物)。为了使电脑能统一访问,则定义一个接口(Storage),使要被访问的不同类型的存储器实现这个接口,这样电脑就可以统一调用了。也可以说是,不同的类型的存储器都有存储的功能,为了使外界(电脑),能够统一访问则建立一个接口,让不同类型的存储器都来实现这个接口,外界则通过接口调用。rnrninterface Storage rn void store(); rn rn rnclass Mp3 implements Storage rn public void store() rn //Mp3的存储规则 rn rn rn rnclass UDisk implements Storage rn public void store() rn //U盘的存储规则 rn rn rn rnpublic class Computer rn public static void access(Storage object) rn object.store(); rn //具体实现 rn rn rn public static void main(String[] args) rn Mp3 m = new Mp3(); rn UDisk ud = new UDisk(); rn access(m); rn access(ud); rn rn rnrn这是我的观点欢迎老鸟指正!rn

抽象类接口区别总结

01-01

1.类是对对象的抽象,可以把抽象类理解为把类当作对象,抽象成的类rn 接口只是一个行为的规范或规定,微软的自定义接口总是后带able字段,证明其是表述一类类“我能做。。。”抽象类更多的是定义在一系列紧密相关的类间,而接口大多数是关系疏松但都实现某一功能的类中rn2.接口基本上不具备继承的任何具体特点,它仅仅承诺了能够调用的方法; rn3.一个类一次可以实现若干个接口,但是只能扩展一个父类 rn4.接口可以用于支持回调,而继承并不具备这个特点. rn5.抽象类不能被密封。rn6.抽象类实现的具体方法默认为虚的,但实现接口的类中的接口方法却默认为非 虚的,当然您也可以声明为虚的。 rn7.(接口)与非抽象类类似,抽象类也必须为在该类的基类列表中列出的接口的所有成员提供它自己的实现。但是,允许抽象类将接口方法映射到抽象方法上。rn8抽象类实现了oop中的一个原则,把可变的与不可变的分离。抽象类和接口就是定义为不可变的,而把可变的座位子类去实现。rn9 好的接口定义应该是具有专一功能性的,而不是多功能的,否则造成接口污染。如果一个类只是实现了这个接口的中一个功能,而不得不去实现接口中的其他方法,就叫接口污染。rn10 尽量避免使用继承来实现组建功能,而是使用黑箱复用,即对象组合。因为继承的层次增多,造成最直接的后果就是当你调用这个类群中某一类,就必须把他们全部加载到栈中!后果可想而知.rn11 如果抽象类实现接口,则可以把接口中方法映射到抽象类中作为抽象方法而不必实现,而在抽象类的子类中实现接口中方法rn如果预计要创建组件的多个版本,则创建抽象类。抽象类提供简单的方法来控制组件版本。如果创建的功能将在大范围的全异对象间使用,则使用接口。如果要设计小而简练的功能块,则使用接口。如果要设计大的功能单元,则使用抽象类。 rn如果要在组件的所有实现间提供通用的已实现功能,则使用抽象类。rnrnrn这个只是我学习C#一月以来自己的一点学习心得,希望与csdn上各位朋友多指教!

没有更多推荐了,返回首页

私密
私密原因:
请选择设置私密原因
  • 广告
  • 抄袭
  • 版权
  • 政治
  • 色情
  • 无意义
  • 其他
其他原因:
120
出错啦
系统繁忙,请稍后再试