Java笔记 - 抽象类和接口之间的区别与联系

抽象类

抽象方法

	抽象方法就是指不能被具体实现的方法,也就是没有方法体,并且使用abstract关键字修饰;
	
	语法格式:
				访问修饰符		abstract void show();

抽象类

	抽象类就是指使用abstract关键字修饰的类,抽象类不能被实例化对象。

注意事项

	1.抽象类中可以有成员变量、成员方法以及构造方法;
	2.抽象类中可以有抽象方法,也可以没有;
	3.拥有抽象方法的类必须是抽象类,因此通常情况下拥有抽象方法并且有abstract;
			关键字修饰的类才认为是真正的抽象类;

实际意义

	抽象类的意义不在于实例化而在于被继承,若一个类继承自抽象类则必须重写抽象方法,否则该类也得变成抽象类。
	因此,抽象类对子类具有强制性和规范性,叫作模板设计模式。

	*经验分享:
			在以后的开发中推荐使用父类引用指向子类的对象形式,因为父类的引用直接调用的方法一定是父类拥有的方法,当需要更换指向子类对象的时候,只需要将new后面的该方式类型更改一下就可以了,其他的代码无需改动,因此提高了代码的可维护性和可扩展性。
			该方式的缺点在于:父类的引用不能直接调用子类独有的方法,若调用则需要强制类型转换。

接口

基本概述

	接口就是一种比抽象类还抽象的类,该类型不能实例化。
	
	定义类的关键字是class	而定义接口的关键字是interface

	继承类的关键字是extends,而实现接口的关键字是implements

	当多个类型之间具有相同的行为能力的时候,java中就可以通过接口进行类型之间的联系。

	通过接口可以解决java中单继承所带来的一些类型无法构成问题。

	接口定义了某一些规范,并且需要去遵守
	
	接口不关心类的内部数据,也不关心这些类里方法的实现细节,它只规定这些类里必须提供的某些方法。

语法格式

	修饰符		interface	接口名称	[extends 	父接口1,父接口2,......]{
		零个到多个常量的定义
		零个到多个抽象方法的定义
		零个到多个默认方法定义(jdk1.8新特性)
		零个到多个静态方法的定义(jdk1.8新特性)}

注意事项

	1.接口可以实现多继承,也就是说一个接口可以同时继承多个父接口。
	2.实现接口的类如果不能实现所有接口中待重写的方法,则必须设置为抽象类。
	3.一个类可以继承自一个父类,同时实现多个接口
	4.接口中的所有成员变量都必须由public static final 共同修饰,也就是常量。
	5.接口中所有成员方法必须由public abstract 共同修饰,也就是抽象方法。

类和接口之间的关系

	类和类之间采用继承的关系			使用extends关键字			支持单继承
	类与接口之间采用实现的关系		使用implements关键字			支持多实现
	接口与接口之间的关系采用继承的关系	使用extends关键字			通常认为支持单继承

抽象类和接口的主要区别(笔试题)

	1.定义抽象类的关键字是class,而定义接口的关键字是interface
	2.继承抽象类的关键字是extends,而实现接口的关键字是implements
	3.继承抽象类支持单继承,而实现接口支持多实现
	4.抽象类有构造方法,但是接口没有
	5.接口中的所有成员变量都必须是常量,而抽象类中可以是变量
	6.接口中的所有成员方法都必须是抽象方法,而抽象类中可以是普通方法
	7.接口中增加方法一定影响子类,而抽象类中可以不影响

猜你喜欢

转载自blog.csdn.net/solitary__/article/details/97312703