一、今日学习接口的使用与继承
JAVA是只支持单继承的,但现实之中存在多重继承这种现象,如“金丝猴是一种动物”,金丝猴从动物这个类继承,同时“金丝猴是一种值钱的东西”,金丝猴从“值钱的东西”这个类继承,同时“金丝猴是一种应该受到保护的东西”,金丝猴从“应该受到保护的东西”这个类继承。这样金丝猴可以同时从 “动物类”、“值钱的东西类”、“应该受到保护的东西” 这三个类继承,但由于JAVA只支持单继承,因此金丝猴只能从这三个类中的一个来继承,不能同时继承这三个类。因此为了封装现实生活中存在的多重继承现象,为了实现多继承,可以把其中的两个类封装成接口。使用接口可以帮助我们实现多重继承。
1.使用接口
(1)接口不能单独实例化,需要通过接口的实现类来进行实例化,接口的实现类必须实现接口内的全部方法,
(2)接口的使用
接口的实现类的形式:
[修饰符] class <类名> [extends 父类名] [implements 接口列表]
实例如下:
接口的实例化:接口名 对象=new 接口的实现类();
例如下面代码中的 Student2 inter=new Interface();
package test1; interface Student2{ int clas=0604; void learning(); void eat(); void sleep(); } public class Interface implements Student2{ @Override public void learning() { System.out.println("学生正在学习!"); } @Override public void eat() { System.out.println("学生正在吃饭!"); } @Override public void sleep() { System.out.println("学生正在睡觉!"); } public static void main(String[] args) { Student2 inter=new Interface(); inter.eat(); inter.sleep(); inter.learning(); } }
(3)Java接口的特征归纳
- Java接口中的成员标量默认为public、static、final类型的,而对于它们都可以省略,接口中的成员变量为常量,并且建议全部使用大写,单词之间用“-”分隔。
- Java接口中的方法默认都是public、abstract类型的,并且public和abstract是可以省略的,接口中的方法没有方法体,不能被实例化。
- Java接口中只能包含public、static、final类型的成员变量和public、abstract类型的成员方法。接口中的变量必须初始化,并且方法必须是抽象方法,否则会报错。
- 接口中没有构造方法,不能被实例化。
- 一个接口不能实现另一个接口,但它可以继承多个其他的接口。
- Java接口必须通过类来实现它的实现类来实现抽象方法。
- 当类实现了某个Java接口时,它必须实现接口中的所有抽象方法,否则,这个类必须声明为抽象的。
- 不允许创建接口的实例化,但允许定义接口类型的引用变量,该引用变量引用实现了这个接口的类的实例。
- 一个类只能继承一个直接的父类,但可以实现多个接口,间接地实现了多继承。
2.接口的继承
(1)接口继承接口
接口只能继承接口,不能继承普通类和抽象类。
interface Student2{ int clas=0604; void learning(); void eat(); void sleep(); } interface Student3{ void play(); } interface Student4 extends Student2,Student3{ public abstract void gohome(); }
(2)间接实现多重继承
package test1; interface Student2{ int clas=0604; void learning(); void eat(); void sleep(); } interface Student3{ void play(); } interface Student4 extends Student2,Student3{ public abstract void gohome(); } public class Interface implements Student4{ @Override public void learning() { System.out.println("学生正在学习!"); } public void eat() { System.out.println("学生正在吃饭!"); } public void sleep() { System.out.println("学生正在睡觉!"); } public void play() { System.out.println("学生正在玩耍!"); } public void gohome() { System.out.println("学生正在回家!"); } public static void main(String[] args) { Student4 inter=new Interface(); inter.eat(); inter.sleep(); inter.learning(); inter.play(); inter.gohome(); } }
接口总结:接口和接口之间可以相互继承,类和类之间可以相互继承,类和接口之间,只能是类来实现接口。
二、问题
接口的使用不太流畅
三、明日继续学习接口