《抽象类和接口的区别》

抽象类和接口的区别

开发工具与关键技术:MyEclipse 10、Java
作者:潘玉莹
撰写时间:2019-04-12

 抽象类的概念
在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。
抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法、初始化块和构造方法和普通类一样。
使用ababstract关键字来修饰的类称为抽象类
由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。
 抽象方法
抽象方法只包含一个方法名,而没有方法体,使用ababstract修饰
抽象方法要存在抽象中;抽象方法也可以存在接口中
 抽象类的总结
a) 抽象类必须使用abstract修饰符类修饰
b) 抽象方法也必须使用abstract修饰符来修饰
c) 抽象方法体不能有方法体
d) 抽象类不能被实例化,无法使用new关键字来调用抽象类的构造器创建抽象类的实例
e) 抽象类可以可以包含成员变量,方法(普通方法和抽象方法都可以)、构造器、初始化、内部类(接口、枚举)五种成分
f) 抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类
g) 抽象类的构造器不能用于创建实例,主要是用于被子类调用
h) Abstract、static不能同时修饰一个方法

 接口的概念
接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。
接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。
除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。
接口无法被实例化,但是可以被实现。一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。
在 Java 中,接口类型可用来声明一个变量,他们可以成为一个空指针,或是被绑定在一个以此接口实现的对象。
 接口的定义
a) 接口是隐式抽象的,当声明一个接口的时候,不必使用abstract关键字
b) 接口中每一个方法也是隐式抽象的,声明时同样不需要abstract关键字
c) 接口的方法都是公有的
d) 编译时自动为接口里定义的方法添加public abstract关键字
e) Java接口里的成员变量只能是public static final 共同修饰的,并且必须赋初值,可以不写public static final 会自动添加
 接口的实现
a) 当类实现接口的时候,类要实现接口中所有的方法。否则,类必须声明抽象类
b) 类使用implements关键字实现接口。在类声明中,implements关键字放在class声明后面
c) Java中类可以实现多个接口
 接口的继承
d) 一个接口可以继承另一个接口、和类之间的继承方式比较相似。接口的继承使用extends关键字、子接口继承父接口的方法,接口允许多继承
 抽象类和接口的相同点

  1. 抽象类和接口都不能被实例化
  2. 都是抽象的,接口是抽象方法的集合
  3. 同样具有abstract关键字修饰
     抽象类和接口的对比
    参数 抽象类 接口
    默认的方法实现 它可以有默认的方法实现 接口完全是抽象的,不存在方法的现实
    实现 子类使用extends关键字来继承抽象类,如果子类不是抽象类的话,它需要实现类中所有方法 类使用关键字impements来实现接口。它需要提供接口中所有声明的方法的实现
    构造器 抽象类可以有构造器 接口不能有构造器
    与正常JAVA类的区别 除了不能实例化抽象类之外,它和普通的JAVA没有任何区别 接口是完全不同的类型
    访问修饰符 抽象方法可以有pubic、protected和default这些修饰符 接口方法默认修饰符是public。你不可以使用其他修饰符
    Main方法 可以有main方法并且运行 接口没有main方法
    多继承 抽象类可以继承一个类和实现多个接口 接口只可以继承一个或多个其他接口
    添加新方法 如果你往抽象类中添加新的方法,你可以给它提供默认 如果你往接口中添加方法,那么你必须改变实现该接口的类。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值