抽象类:
抽象方法没有方法体只有方法签名,必须要用abstract修饰方法
拥有抽象方法的类必须为抽象类,即类必须要用Abstract修饰类
其中抽象类一定有构造器,但是不一定有抽象方法
抽象类的作用:
为了被子类继承,即子类必须要重写抽象方法,否则这个类也要被定义为抽象类
抽象类的特征:(有得有失)
拥有抽象方法的能力,但是失去创建对象的能力
抽象类的存在意义:
1.为了被子类继承,否则毫无意义(基本准则)
2.抽象类体现的是模板思想,部分实现,部分抽象,可以设计模板设计模式
抽象类的设计模板模式:(架构或思想)可提高开发效率,提高软件扩展性和维护性
优化代码架构,提高代码复用性,抽象部分由子类实现
将大家都有的功能但具体又有不一样的功能抽象化
接口:
体现的是规范思想,实现接口的子类必须要全部重写接口的抽象方法
接口定义格式:
修饰符 interface 接口名称{
在JDk 1.8之前接口中只能是抽象方法和常量,除此之外没有其他成分
}
1.抽象方法
在接口中的抽象方法可以public abstract 不写,默认会加上
void run();
2.常量:变量值只有一个,而且在程序运行过程中不可更改
一般修饰符是:public static final
名称建议字母全部大写,多个单词用_连接
而public static final可以省略,默认是会加上的
public static final String SCHOOL_NAME = "黑马";
子类 继承 父类
实现类 实现 接口
接口的基本实现:(不是类,但相当于父类)
类于类是继承关系
类与接口是实现的关系,接口是被类实现的,实现接口的类是实现类
类实现接口的格式:
修饰符 class 实现类名称 implements 接口1,接口2,接口3{
}
即接口可以多实现,但是一定要重写全部接口中全部的抽象方法
接口与接口的多继承(区别类与类是单继承),一个接口可以同时继承多个接口
JDK 1.8之后接口新增了三个方法:
1.默认方法:就是普通的实例方法
必须用default修饰
默认会加public修饰
只能用接口的实现类的对象来调用
2.静态方法
可以直接加static修饰
默认会加public修饰
接口的静态方法只能用接口的类名称调用
3.私有方法(从1.9开始)
私有的实例方法,必须要用private修饰
注意:
1.当一个类继承一个父类,有实现多个接口
当父类的方法名和接口的方法名一致时,子类使用时会选择去执行父类中的方法
2.当一个类实现多个接口时,多个接口中存在同名的默认方法
实现类必须重写这个方法
3.接口没有构造器,不能创建对象
接口本身是抽象的