【Java学习笔记三】抽象类与接口

对象的类型转换分为自动转换和强制转换两种

  • 派生类向基类转换是自动转换,因为派生类中包含基类
  • 基类向派生类的转换是强制转换

强制类型转换是通过在转换对象前面使用圆括号运算符来实现,圆括号内为要转换的目标类型,格式为:

(<目标类型>)<表达式>

抽象类中必须包含至少一个抽象方法。
抽象方法只有方法头(方法的声明),没有方法体,在方法头后面直接使用分号来结束抽象方法的定义。
定义抽象类需要在一般类定义格式的关键字class前面使用关键字修饰符abstract,定义抽象类中的每个抽象方法也需要在方法头前面使用关键字abstract作为修饰符,在方法头后面使用分号结束。

抽象类不能使用new运算进行实例化,但可以定义抽象类的引用对象,用来引用其派生类中的实例对象,以便实现多态性。抽象方法将在抽象类的派生类中实现,派生类中也可以包含非抽象方法。如果一个抽象类中除了抽象方法外什么都没有则用接口更加合适。

接口interface:接口的所有方法都是抽象的,即一个纯的抽象类。它允许创建者规定一个类的基本形式:成员变量列表和方法声明,但是每个成员变量都默认为具有public static final,并且只能在定义时被初始化,接口中每个成员方法都默认具有public abstract修饰。

[public]interface 接口名 [extends 接口名]
{
	变量声明://声明变量时必须用final static修饰
	抽象方法声明://声明方法时必须用public abstract 修饰,但是java默认的方法都是public abstract的,故可将其省略。
}

同抽象类一样,接口不能被实例化。一个接口还可以继承一个或者多个接口。
一个类可以实现一个或者多个接口,所使用的子句关键字为implements。如果一个接口定义中只包含有声明方法,不包含有成员变量定义,则称此为纯接口。

实现接口:

[修饰符]class 类名[extends 父类名] implements 接口名[,接口名2.] {类体}

如果一个类引用了某个接口,就必须在类体中重写接口中所定义的所有抽象方法。但是有时定义的类这并不需要调用接口中的某一个方法,这时可将该方法重写为一个空的方法,即该方法只是一对大括号。

在Java中接口和类有些相似,但是两者有不同之处:

  • 接口中定义的变量都是final static类型的,而且接口中定义的方法都是抽象方法
  • Java中类不支持多重继承,但是一个类可以实现多个接口和一个父类,一个接口可以继承多个接口。(可以理解为变相的多重继承,弥补了Java没有多重继承的缺陷)。

接口和抽象类的异同:

  • 从某种意义上来讲,interface可以看作一种特殊形式的abstract class
  • 但是在具体应用上两者还是有区别的。抽象类在Java语言中体现了一种继承关系,即父类和子类在概念本质上应该是相同的。对于interface来讲,并不要求接口实现者和接口定义在概念本质上一致。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值