首先想要了解两者的区,你就要先了解什么是抽象类和接口
一,抽象类:
1,概念:
抽象类通常代表一个抽象概念,它提供一个继承的出发点,当设计一个新的抽象类时,一定是用来继承的。
eg:就像一个动物类,动物类无法被实例化,因为你不知道时那种动物,长什么样子,这就需要你自己去创建一个抽象类,然后再在某种动物的类中重写动物的长相。
2,特点:
- 抽象类不能实例化
- 抽象方法是必须被子类重写的方法
- 如果类当中包含抽象方法,那么这一定师哥抽象类
3,用法:
抽象类需要用abstract来表示:
带入如下:抽象方法没有方法体,直接就在后面添加“;”
abstract class Person{
private String name;
public String getName(){
return this.name;
}
public void setName(){
this.name = name;
}
public abstract void getPersonInfo();
}
二,接口:
1,概念:
接口是把隐式公共方法和属性组合起来,以封装特定功能的一个集合。
eg:在动物类当中有,机器猫也属于猫类,但是它又不是一般的动物,所以这就需要给它一个特殊的接口,来写机器猫不只能够有猫类,还能变出很多东西的接口。
2,特点:
- 接口的名称前要加"I",接口中方法和属性前面是不能有修饰符,方法没有方法体
- 注意接口是用interface来声明的
- 子类继承父类和接口的时候,只需要在中间添加一个","
- 一个类只能有一个父类,但是却可以有很多子类
- 接口不能实例化,不能有构造方法和字段,但不能有修饰符,不能声明动态静态
- 使用接口的类一定要实现接口中的所有的方法和属性
3,用法:
使用interface,在接口名前加一个I
代码如下:
interface IChange
{
string ChangeThing(string thing);
}
class MachineCat :Cat,ICange
{
public string ChangeThing(string thing)
{
return base.Shout() +"我的万能口袋"+thing;
}
}
三,接口和抽象类的区别:
- 抽象类是对对象的抽象,接口是对行为的抽象,抽象类是对类整体(字段,属性,方法)的抽象,接口是对局部的行为进行进行抽象。
- 行为跨越不同的类的对象,可使用接口,对于一些相似的类可以使用类对象。eg:孙悟空,我们可以把它算作猴子类,但是又可以让他有一个会变东西的接口。
- 抽象类是根据子类来抽象出的类,你知道了这是一个动物之间的比赛,那么你要描述动物时,你就会设定一个动物类,但是你不确定是有什么动物之间会进行比赛,所以你就要提前写动物们比赛的内容,进行预先的定义。