抽象类和接口的区别:
文章内容结构划分:
1.抽象类和接口定义和实现的书写规范:
抽象类
定义:
抽象是把多个事物的共性的内容抽取出来,本质就是把我们关注的内容抽取出来(比如:宝马、奔驰都属于汽车,汽车是抽象出来的概念)。
注意:Java中可以定义没有方法体的方法,该方法由其子类来具体的实现。该没有方法体的方法我们称之为抽象方法,含有抽象方法的类我们称之为抽象类。
接口
接口时抽象方法与全局常量的集合。子类实现接口时,用关键字implements实现。
抽象类和接口定义和实现的书写规范:
抽象类
抽象类定义:
[访问修饰符] abstract class 类名{
[访问修饰符] abstract <返回值类型> 方法名([参数列表]);
}
抽象类实现:
[访问修饰符] class 类名 extends 抽象类类名 {
// 抽象方法的实现,可以不用全部实现
}
接口
接口的定义:
[访问修饰符] interface 接口名{
[public] [static] [final] 常量;
[访问修饰符] <访问修饰符> 方法名(形参列表);
}
接口的实现:
[修饰符] class <类名> [implements 接口列表,接口列表,,,]{
// 注意:所有未实现的方法均都实现
}
抽象类和接口的区别:
- 抽象类和接口都不能被实例化,但是接口可以实现之后,利用多态的特性实例化。如IUserDao userDao = new UserDaoImpl();
- JAVA 中不支持多继承,但接口的引入实现了多继承,即一个类可以实现多个接口(继承只能继承一个抽象类)
- 抽象类用abstract修饰,接口用ingterface修饰;extends 继承类;implements 实现接口;类和接口是不同的:类里是有程序实现的;而接口无程序实现,只可以预定义方法。
- 抽象类里可以包含已经实现的方法,只要包含一个抽象或者多个抽象的方法即可,但是接口中的全部都是未实现的方法。
- 抽象类表示的是,这个对象是什么;接口表示的是,这个对象能做什么(eat,run…)。
- 抽象类的重中之重的作用就是提高代码的重用性;接口的作用是实现了多继承;
3.抽象类接口理解案例:
案例一:
你看过周星驰的电影没,就是那个去水果店,揪住老板说要一斤水果!老板问他你要什么水果,他说他就要水果!这个水果就是抽象类。
水果是抽象的,但苹果、西瓜是抽象类的一个具体的水果,他们就是水果实例化的结果。
案例二:
抽象类的一个功能–不能被实例化。也就是不能被new.
举个生活中的例子 宠物类下面有狗狗类,猫猫类来继承它。 一般的情况我们有这两种方法 宠物类 a =new 狗狗类();
翻译就是。我有一只宠物,这只宠物是狗狗,它叫a 狗狗类a=new 狗狗类(); 我有一只狗狗,它叫a.
这个不区别。关键的是,楼主来看下面的代码 宠物类 a=new 宠物类();
虽然我们经常说,我有一只宠物。(但是请注意,实际上没有一种叫宠物有东西。宠物是个泛泛的概念,我们现实生活中有狗和猫)
所以抽象类不能被new的功能。是为了符合事实意义。 同时也是类的一种高度概括。 我们说类是对象的抽象。抽象类又是各种各校类的抽象
案例三:
比如说人和狗都属于动物,这里“动物”是抽象类,“人”和“狗”是“动物”的实体子类,动物都会“走路”,“走路”这个方法在“动物”类中没有具体实现(抽象方法),因为不同的动物表现出来的“走路”方法是不同的,比如这个例子中,“人”是二条腿走路,“狗”是四条腿走路,所以这种具体差异就需要在子类中重写,否则“人”和“狗”就没区别了。
友情链接:
CDSN:抽象类的概念和作用
百度知道:java里抽象类到底有什么用?
百度知道:抽象类到底有什么用呀
百度百科:implements
百度百科:extends