抽象类和接口两者的区别,在刚学编程的人眼中,仿佛区别不较着,用谁都可以。可是,这个却又是经常被问到的问题。那么,抽象类和接口都有哪些区别呢?本文以C#为例进行申明
本文以C#语法为例申明,打开visual studio,建立肆意一个项目类型都行。本文以建立一个节制台应用程序为例,当项目建立好之后,再建立一个接口类,叫做IAnimal,与一个抽象类Person
接口只是一组方式的调集,并不克不及包含任何实现,所以,接口是不克不及包含字段的。抽象类在没有抽象方式的环境下,跟通俗方式不同不大,其他类内部能有的工具,抽象类也都可以有。所以,抽象类是可以包含字段界说的
接口中的方式只能有方式体,不克不及有具体的实现代码。抽象类中的方式,若是不加abstract就可以有方式体的实现代码,一旦加上abstract这个关头字的方式,就是抽象方式,这样的方式,不克不及有方式体
在C#中,一个类可以同时实现多个接口。可是,一个类只能同时实现一个父类,实现抽象的父类也只能是一个,这就是C#中的单担当原则
接口并不严酷要求里面的方式有不异的共性与联系,好比,在IAnimal方式中,可以插手物品相关的方式。可是,抽象类凡是是对一种什物的抽象,所以,原则上不会将不相关的方式插手进来,因为,抽象类中界说的方式,子类可以或许主动获得并利用
接口中的方式是不克不及带拜候润色符的,即使是public也不克不及有,默认就是公开的。抽象类中的方式,可以带任何拜候润色符,好比public、private、protected等
子类实现接口的时辰,必需将接口中的所有方式都实现,无一破例。可是,在抽象类中的方式,若是不是利用abstract润色的抽象方式,就可以不实现,子类主动获得这个方式的利用权限
0 篇文章
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!