码迷,mamicode.com
首页 > 编程语言 > 详细

Java基础进阶_2

时间:2020-04-03 21:51:43      阅读:67      评论:0      收藏:0      [点我收藏+]

标签:直接   构造器   不能   初始化   col   创建   接口   span   java   

抽象类:

使用abstract关键字修饰的类为抽象类,其内部可以有类的一切成员,还可以有abstract修饰的抽象方法(不一定有),抽象方法只有方法的声明,没有方法体,有抽象方法的类必须声明为抽象类。

抽象类不能够创建对象(为什么?反证法:假设创建了抽象类的对象,使用其对象调用抽象方法,而方法没有方法体,没有意义),但其必须是有构造器的,是提供给其子类创建对象时,初始化父类成员使用的。

抽象类的子类必须实现父类的抽象方法,如果不实现,也必须将子类定义为抽象方法。

抽象类存在的意义:为了被子类继承,体现的是模板思想。(抽象类中实现的是模板中确定的成员,不确定如何实现的交给子类实现)。

抽象类的构造器不能为私有,否则子类无法访问,无意义。

接口:

jdk1.8之前接口中只能有抽象方法(public abstract忽略不写)和共享常量(public static final忽略不写)。

jdk1.8开始之后接口中还可以有默认方法(用default修饰,只能用接口的实现类的对象来调用)、静态方法(用static修饰,只能用本接口名直接调用)、私有方法(jdk1.9开始才有的,用private修饰,只能用接口中其它私有方法和默认方法调用)。

两者区别:

相同点:
1、都不能被实例化。
2、接口的实现类和抽象类的子类只有全部实现了接口或者抽象类中的方法后才可以被实例化。
不同点:
1、单继承,多实现。接口可以实现多个,只能继承一个抽象类。
2、接口强调的是功能,抽象类强调的是所属关系。
3、接口中的所有成员变量为public static final, 静态不可修改,当然必须初始化。接口中的所有方法都是public abstract公开抽象的。而且不能有构造方法。抽象类就比较自由了,和普通的类差不多,可以有抽象方法也可以没有,可以有正常的方法,也可以没有。

Java基础进阶_2

标签:直接   构造器   不能   初始化   col   创建   接口   span   java   

原文地址:https://www.cnblogs.com/superyucong/p/12629037.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!