目录
抽象类与抽象方法
抽象方法: 就是加上abstract关键字,然后去掉大括号,直接分号结束。
抽象类: 抽象方法所在的类,必须是抽象类才行。在class之前写上abstract即可。
举个例子:
使用方法:
如何使用抽象类和抽象方法:
1.不能直接创建new抽象类对象。必须用一个子类来继承抽象父类,
2.子类必须覆盖重写抽象父类当中所有的抽象方法。
3.霍盖重写(实现):子类去掉抽象方法的abstract关键字,然后补上方法体大括号。
4.创建子类对象进行使用。
2、3、代码举例:(子类覆盖重写抽象方法)
4、代码举例:(创建子类对象进行使用,调用抽象类子类的方法)
接口
接口的概念:
接口就是多个类的公共规范。
接口是一种引用数据类型,最重要的内容就是其中的:抽象方法
如果是Java 7,那么接口中可以包含的内容有:
1.常量
2.抽象方法
如果是Java 8,还可以额外包含有
3.默认方法
4.静态方法
接口内的抽象方法:
在任何版本的Java中,接口都能定义抽象方法。
格式: public abstract 返回值类型 方法名称(参数列表);
注意事项:
1.接口当中的抽象方法,修饰符必须是两个固定的关键字: public abstract
2.这两个关键字修饰符,可以选择性地省略。
3.方法的三要素,可以随意定义。
接口使用步骤:
接口不能直接使用,不能直接new,需要一个实现类来实现它,类似与 子类继承父类来实现父类的方法
1.接口不能直接使用,必须有一个“实现类”来“实现”该接口
格式: public class 实现类名称 implements 接口名称{ }
2.接口的实现类必须覆盖重写(实现)接口中所有的抽象方法
实现:去掉abstract关键字,加上方法体大括号。
3.创建实现类的对象,进行使用。
注意:
如果实现类并没有覆盖重写接口中所有的抽象方法,那么这个实现类自己就必须是抽象类。
程序举例:
1、刚刚的定义接口:
2、接口的实现类,implements接口,覆盖重写接口所有的抽象方法
3、创建实现类的对象来使用:
**接口的默认方法:default
如果接口中新添加了一个抽象的方法,那么所有继承他的实现类都要进行对这个新方法的重写;
那么可以将这个新添加的抽象类改为接口的默认方法,其实现类会继承这个默认方法,但不用必须对其重写(如果需要的时候,可以手动选择性重写覆盖)
新类调用实现类
运行结果:
**接口的静态方法:
接口静态方法:
静态方法无需实现类重写
调用无需创建新的实现类对象,更不能用实现类对象来调用静态方法
正确调用:直接用接口名.静态方法(参数);
接口变量:
继承父类并实现多个接口:
1、
2、父类只能有一个,接口可以很多个
5、
implements的两个接口里面有相同的默认方法,但是方法体冲突
实现类对冲突默认方法进行覆盖重写
此时必须要覆盖重写,因为不覆盖重写会继承两个冲突的默认方法
接口与接口之间的多继承
3、
注意:
抽象类和接口的区别:
使用语义:接口更像是描述某种行为和能力,抽象类更像是描述事务本身的特质。
接口能实现的抽象类都能实现,抽象类单继承、多实现
抽象类是一个类,可以有类中可以有的东西。接口不可以
接口可以继承接口,并且可多继承接口,但类只能单一继承。