JAVA中的abstract 和 interface

abstract class 和 interface是Java语言中对于抽象类定义进行支持的两周机制,正是由于这两周机制的存在,才赋予了Java强大的面向对象的能力。abstract class和interface之间对抽象类定义的支持方面具有很大的相似性,甚至可以相互替换,因为很多developer在进行抽象类定义时对于abstract calss 和interface的选择显得比较随意,其实两者之间还是有很大区别的。

(1)语法定义层面

	abstract class Demo {
		abstract void func1();

		abstract void func2();

		private void func3() {
		}
	}

	interface Demo {
		void func1();

		void func2();
	}

在abstract class方式中,Demo可以有abstract数成员,也可以有非abstract数据成员和方法, 而在interface方式实现中,Demo只能有static final的数据成员,但在interface中一般不定义数据成员,而且所有的成员方法都是abstract的。

abstract class在Java语言中表示的是一种继承关系,Java类只能实现单继承,但是,却可以实现多个interface。

(2)设计理念层面

abstract class在Java中体现的是一种继承关系,父类和派生类之间必须存在“is-a”关系,即父类和派生类在概念本质上应该是相同的。

但是interface则不然,并不要求interface的实现者和inferface定义在概念本质上是一致的,仅仅是实现了interface定义的契约而已。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值