请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站

java知识分享-我的java记事本

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 971|回复: 0

Interface与abstract类的区别

[复制链接]

131

主题

132

帖子

565

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
565
发表于 2017-5-29 21:22:55 | 显示全部楼层 |阅读模式
(01).abstract class 在Java中表示的是一种继承关系,一个类只能使用一次继承关系。但是,一个类却可以实现多个interface。
(02).在abstract class 中可以有自己的数据成员,也可以有非abstarct的方法,而在interface中,只能够有静态的不能被修改的数据成员(也就是必须是static final的,不过在 interface中一般不定义数据成员),所有的方法都是public abstract的。
(03).抽象类中的变量默认是 friendly 型,其值可以在子类中重新定义,也可以重新赋值。接口中定义的变量默认是public static final 型,且必须给其赋初值,所以实现类中不能重新定义,也不能改变其值。
(04).abstract class和interface所反映出的设计理念不同。其实abstract class表示的是"is-a"关系,interface表示的是"like-a"关系。
(05).实现抽象类和接口的类必须实现其中的所有方法。抽象类中可以有非抽象方法。接口中则不能有实现方法。
abstract class 和 interface 是 Java语言中的两种定义抽象类的方式,它们之间有很大的相似性。但是对于它们的选择却又往往反映出对于问题领域中的概念本质的理解、对于设计意图的反映是否正确、合理,因为它们表现了概念间的不同的关系。
man';font-size:10.5000pt;mso-font-kerning:1.0000pt;" >

(02)、不能通过访问权限、返回类型、抛出的异常进行重载;   
(03)、方法的异常类型和数目不会对重载造成影响;   
(04)、重载事件通常发生在同一个类中,不同方法之间的现象。
(05)、存在于同一类中,但是只有虚方法和抽象方法才能被覆写。
其具体实现机制:
overload是重载,重载是一种参数多态机制,即代码通过参数的类型或个数不同而实现的多态机制。 是一种静态的绑定机制(在编译时已经知道具体执行的是哪个代码段)。   
override是覆盖。覆盖是一种动态绑定的多态机制。即在父类和子类中同名元素(如成员函数)有不同 的实现代码。执行的是哪个代码是根据运行时实际情况而定的。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|java知识分享 ( 闽ICP备14003021号-4   

GMT+8, 2019-1-18 10:14 , Processed in 0.074957 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表
手机壁纸    百度负面处理    代加群    粉丝福利购    燕窝    拉菲娱乐    新辉煌寿宁红石材厂