接口 vs 抽象类

来源:互联网 发布:spark sql教程 编辑:程序博客网 时间:2024/05/29 08:41

简单的来说,接口是对行为的抽象,类是对对象的抽象。

抽象类

抽象类:包含抽象方法的类,不可用于创建对象
特点:
1. 为了子类能够继承,抽象方法必须为public或protected,默认为public
2. 如果继承抽象类,子类必须实现父类的方法,如果不实现,子类也被视为抽象类,也就是说,抽象类是可以继承抽象类的

接口

接口,实际上就是把需要多次使用的方法从类中剥离出来,以便所有的类使用。是一种对行为的抽象。
特点:
1. 所有方法视为public abstract;
2. 接口中一般不写变量,如果有必须是public static final类型。

接口 vs 抽象类

这两个东西从设计层次上就是不同的,一个根本上是类,只能继承一次,一个是接口,是行为,可以实现多次。举个栗子!
鸟和企鹅的例子
鸟有吃和睡觉两个行为
我们可以声明一个抽象类或者接口

abstract class bird{    public abstract eat();    public abstract sleep();}class penguin extend bird{    //具体实现}

or

interface bird{    public abstract eat();    public abstract sleep();}class penguin implements bird{    //具体实现}

如果我现在需要鸟可以飞。
1. 把三个功能放到抽象类中,但是企鹅是鸟类但是不会飞,所以该方案不可行;
2. 在每个可以飞的鸟类实现类中加一个fly方法,很多鸟都可以飞,我是个懒人,不喜欢敲太多代码;
3. 把fly写在interface中,让所有可以飞的鸟类实现该接口。

abstract class bird{    public abstract eat();    public abstract sleep();}interface fly{    public abstract fly();}class penguin extend bird implements fly{    //具体实现}

栗子中体现了接口和抽象类的本质不同,抽象类是对象固有的行为,对于鸟类是吃和睡,而接口是扩展的行为,例如飞。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 肝里胆管有结石怎么办 被信任的人算计你怎么办 卡罗拉1.8油耗高怎么办 请问09年途锐柴油版怎么办 油电混合没电了怎么办 前向运动精子3%怎么办 精子活力正常精子活率低怎么办? 精子形态正常率低怎么办 前向运动精子20%怎么办 不运动精子率高怎么办 前向运动精子少怎么办 精子前向运动力低怎么办 精子异常形态率高怎么办 精子正常率才1%怎么办 精子头部缺陷率高怎么办 前向运动精子15%怎么办 精子向前运动力低怎么办 前向运动精子10%怎么办 前向运动精子12%怎么办 前向运动精子2%怎么办 正常精子形态只有10%怎么办 精子混合畸形率高怎么办 正常形态精子才2怎么办 精子密度低至0.8怎么办 精子总活动率低怎么办 前向运动精子低怎么办 精子畸形率百分之94怎么办 实验室授权签字人考不过怎么办 万和热水器排污口漏水怎么办 万和热水器水箱漏水怎么办 军训鞋大了怎么办妙招 麽稍神经不好受怎么办 绒面高跟鞋太硬怎么办 新买的鞋子太硬怎么办 鞋底太硬脚掌疼怎么办 耐克鞋子走路吱吱响怎么办 两只鞋子有色差怎么办 劳保鞋鞋底太硬怎么办 在学校校服丢了怎么办 高中没进重点班怎么办 孩子不懂学不想学怎么办