抽象类和接口对比(详细)

抽象类和接口的区别:

文章内容结构划分:

1.抽象类和接口定义和实现的书写规范

2.抽象类和接口的区别

3.抽象类接口理解案例

1.抽象类和接口定义和实现的书写规范:

抽象类

定义:
抽象是把多个事物的共性的内容抽取出来,本质就是把我们关注的内容抽取出来(比如:宝马、奔驰都属于汽车,汽车是抽象出来的概念)。
注意:Java中可以定义没有方法体的方法,该方法由其子类来具体的实现。该没有方法体的方法我们称之为抽象方法,含有抽象方法的类我们称之为抽象类。

接口
接口时抽象方法与全局常量的集合。子类实现接口时,用关键字implements实现。

抽象类和接口定义和实现的书写规范:

抽象类

抽象类定义:

[访问修饰符] abstract class 类名{
	[访问修饰符] abstract <返回值类型> 方法名([参数列表]);
}

抽象类实现:

[访问修饰符] class 类名 extends 抽象类类名 {
	//  抽象方法的实现,可以不用全部实现
}

接口
接口的定义:

 [访问修饰符] interface 接口名{
 		[public] [static] [final] 常量;
 		[访问修饰符] <访问修饰符> 方法名(形参列表);
 }

接口的实现:

[修饰符] class <类名> [implements 接口列表,接口列表,,,]{
	//  注意:所有未实现的方法均都实现
}

抽象类和接口的区别:

  1. 抽象类和接口都不能被实例化,但是接口可以实现之后,利用多态的特性实例化。如IUserDao userDao = new UserDaoImpl();
  2. JAVA 中不支持多继承,但接口的引入实现了多继承,即一个类可以实现多个接口(继承只能继承一个抽象类)
  3. 抽象类用abstract修饰,接口用ingterface修饰;extends 继承类;implements 实现接口;类和接口是不同的:类里是有程序实现的;而接口无程序实现,只可以预定义方法。
  4. 抽象类里可以包含已经实现的方法,只要包含一个抽象或者多个抽象的方法即可,但是接口中的全部都是未实现的方法。
  5. 抽象类表示的是,这个对象是什么;接口表示的是,这个对象能做什么(eat,run…)。
  6. 抽象类的重中之重的作用就是提高代码的重用性;接口的作用是实现了多继承;

3.抽象类接口理解案例:

案例一:

你看过周星驰的电影没,就是那个去水果店,揪住老板说要一斤水果!老板问他你要什么水果,他说他就要水果!这个水果就是抽象类。

水果是抽象的,但苹果、西瓜是抽象类的一个具体的水果,他们就是水果实例化的结果。
案例二:

抽象类的一个功能–不能被实例化。也就是不能被new.

举个生活中的例子 宠物类下面有狗狗类,猫猫类来继承它。 一般的情况我们有这两种方法 宠物类 a =new 狗狗类();
翻译就是。我有一只宠物,这只宠物是狗狗,它叫a 狗狗类a=new 狗狗类(); 我有一只狗狗,它叫a.
这个不区别。关键的是,楼主来看下面的代码 宠物类 a=new 宠物类();
虽然我们经常说,我有一只宠物。(但是请注意,实际上没有一种叫宠物有东西。宠物是个泛泛的概念,我们现实生活中有狗和猫)
所以抽象类不能被new的功能。是为了符合事实意义。 同时也是类的一种高度概括。 我们说类是对象的抽象。抽象类又是各种各校类的抽象

案例三:

比如说人和狗都属于动物,这里“动物”是抽象类,“人”和“狗”是“动物”的实体子类,动物都会“走路”,“走路”这个方法在“动物”类中没有具体实现(抽象方法),因为不同的动物表现出来的“走路”方法是不同的,比如这个例子中,“人”是二条腿走路,“狗”是四条腿走路,所以这种具体差异就需要在子类中重写,否则“人”和“狗”就没区别了。

友情链接:
CDSN:抽象类的概念和作用
百度知道:java里抽象类到底有什么用?
百度知道:抽象类到底有什么用呀
百度百科:implements
百度百科:extends

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值