Java基础进阶_2
Posted 余聪
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java基础进阶_2相关的知识,希望对你有一定的参考价值。
抽象类:
使用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公开抽象的。而且不能有构造方法。抽象类就比较自由了,和普通的类差不多,可以有抽象方法也可以没有,可以有正常的方法,也可以没有。
1、都不能被实例化。
2、接口的实现类和抽象类的子类只有全部实现了接口或者抽象类中的方法后才可以被实例化。
不同点:
1、单继承,多实现。接口可以实现多个,只能继承一个抽象类。
2、接口强调的是功能,抽象类强调的是所属关系。
3、接口中的所有成员变量为public static final, 静态不可修改,当然必须初始化。接口中的所有方法都是public abstract公开抽象的。而且不能有构造方法。抽象类就比较自由了,和普通的类差不多,可以有抽象方法也可以没有,可以有正常的方法,也可以没有。
以上是关于Java基础进阶_2的主要内容,如果未能解决你的问题,请参考以下文章
java基础进阶篇_HashSet------java源码栈