接口的概念
接口是功能的集合,接口里不写方法体,只写方法,一切事物都有功能,都有接口。
接口的定义
接口文件还是.java文件,编译后仍是.class文件。
定义时需要interface 关键字,public interface 接口名字(
抽象方法;
抽象方法;
);
接口的实现类
就是接口的实现功能,实现接口的方法。
关键字implements,类似于继承的功能 public class 名字 implements 接口名(){
public void 接口抽象方法名字(){
}
}
接口中成员的特点
必须是常量,public static fianl来定义,final:最后的,其值是不能改变的。
接口不可以创建对象,只有接口的实现类可以
例如:
1 package com.oracle.demo01; 2 3 public interface jidu{ //创建一个叫缉毒的接口,创建缉毒这个功能接口
4 public abstract void jidu(); 5 }
1 package com.oracle.demo01; 2 3 public abstract class Dog { //创建一个狗抽象类,2个功能,吃和叫 4 public abstract void eat(); 5 public abstract void Roar(); 6 }
1 package com.oracle.demo01; 2 3 public class jidu_dog extends Dog implements jidu{ //创建一个类,继承了狗的方法和属性,又继承了接口的缉毒功能,然后对这2个抽象类重写 4 public void eat(){ 5 System.out.println("吃狗粮"); 6 } 7 public void Roar(){ 8 System.out.println("汪汪汪"); 9 } 10 public void jidu(){ 11 System.out.println("缉毒"); 12 } 13 }
接口的多继承
1 package com.oracle.demo01; 2 3 public interface f1 { 4 public abstract void show(); 5 }
1 package com.oracle.demo01; 2 3 public interface f2 { 4 public abstract void show1(); 5 }
package com.oracle.demo01; public interface f3 { public abstract void show2(); }
package com.oracle.demo01; public interface f4 extends f1,f2,f3{ 继承了f1,f2,f3的抽象方法 public abstract void show3(); }
package com.oracle.demo01; //ziimp是f4的实现类,但是也把f1-f3的继承了,所有都要重写 public class ziimp implements f4{ public void show() { } public void show1() { } public void show2() { } public void show3() { } }
抽象类和接口的相同点:
1、都是最顶端,只能被继承
2、都不能实例化对象
3、都包涵抽象方法,子类必须重写方法
抽象类和接口的区别:
1,、抽象类提供部分实现方法,避免子类重写,接口只包涵抽象方法
2、一个子类只能继承一个父类,而一个子类可以继承多个接口,弥补了java的单继承
3、抽象类是事物必须具有的
4、接口是事物额外的功能