抽象类和接口

一、抽象类

抽象类:包含抽象方法的类。若一个类包含一个或多个抽象方法,则该类必须被限定为抽象的(否则,编译器会报错)。

抽象方法:没有方法体的方法。

声明抽象方法和进行抽象类的创建的时候,需要用abstract关键字。

abstract classGongFei{    //抽象类

abstract void duCai();  //抽象方法

}

当为抽象类构造对象是不安全的,编译器会确保抽象类的纯粹性而报错。

抽象类中的方法没必要都是抽象的,它可以包含具体方法和数据。若从一个抽象类继承,并想为子类构造对象,那么必须为基类中的所有抽象方法提供方法定义。如果不这样,子类也是抽象类,且编译器会强制我们用abstract关键字来限定子类。可以创建一个没有任何抽象方法的抽象类。

二、接口

接口不是类,而是一组对类的需求描述,它根本就没有提供任何具体实现,所以可以把它看做一个没有任何具体方法的完全抽象的类。它允许创建者确定方法名、参数列表和返回类型,但是没有任何方法体。接口只提供了形式,而未提供任何具体实现。

要创建一个接口,需要用interface关键字类替代class。可以像类一样在interface前面添加public关键字(但仅限于该接口在与其同名的文件中被定义)。若不添加public关键字,则它只有包访问权限。

要让一个类遵循某个特定接口(或者一组接口),需要使用implements关键字。

可以在接口中显示的将方法声明为public的,但是这没有必要,因为接口中的所有方法自动为public的。当一个类implements一个接口时,在接口中被定义的方法在该类中必须被定义为是public的。

接口也可以包含域,但这些域隐式地是static&final的,所以接口也可以作为一种很便捷的创建常量组的工具。接口中的域自动是public的。在接口中定义的域不能是“空final”,但是可以用非常量表达式进行初始化。接口绝不能含有实例域,也不能在接口中实现方法。提供实例域和方法实现的任务应该由实现接口的那个类来完成。

三、接口和抽象类的区别

 

              抽象类

接口

创建

             abstract class

         interface

方法

 可以包含具体实现的方法,abstract方法

     所有方法都没有方法体,自动为public

没特别限定

没有实例域,变量隐式为static&final,自动为public

继承

extends,子类需要实现抽象方法,不然子类也为abstract class

Implements,一个类可以实现多个接口(多继承),需要实现所有方法

实例化

      不能

不能

 

 

 

 

 

 


参考:《Thinking in Java Fuorth Edition》

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值