目录
1:接口的介绍
对于接口,按照官方的解释是:一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些类可以具体不同的行为(功能)。我个人是这样理解的:接口其实就是Java中许多类要用到方法的方法集合,因为每个人写的方法所用的名称都不一样,这样的话,那么等级更高的人就制定了规则,即使用该方法的名称,其他人若使用,则按照规定的名称来调用该方法,并且对于该方法还可以重写,加一些自己再需要的功能。
2:接口的定义和使用
(1)接口的定义
接口用interface关键字来定义
即:public interface 接口名{
}
接口不能实例化。也就是说接口不可以创建对象
接口与类之间是实现关系,即使用implents
public class 类名 implements 接口名{}
接口的子类(实现类)
要么重写接口中的所有抽象方法
要么是抽象类
注意点:(1)接口和类的实现关系,可以单实现,也可以多实现
(2)public class 类名 implements 接口1,接口2
(3)实现类好还可以在继承一个类的同时实现多个接口
(4)public class 类名 extends 父类 implements 接口1,接口2{}
(2)接口的使用
场景:
兔子:吃草,喝水
狗:吃骨头,喝水,游泳
鸭子:吃虫子,喝水,游泳
对于这样子的场景,他们共有的是吃东西以及喝水,所以他们可以有一个共同的父类。但是游泳兔子是没有的,我们就可以给游泳写一个接口。
package two;
public interface swim {
public abstract void swim();
}
package two;
public abstract class animal {
String name;
public animal() {
}
public animal(String name) {
this.name=name;
}
public void setname(String name) {
this.name=name;
}
public String getname() {
return name;
}
public abstract void drink();
public abstract void eat();
}
package two;
public class dog extends animal implements swim{
public dog() {
}
public dog(String name) {
this.name=name;
}
public void eat() {
System.out.println("狗吃骨头");
}
public void drink() {
System.out.println("狗喝水");
}
public void swim() {
System.out.println("狗游泳");
}
}
package two;
public class duck extends animal implements swim{
public duck() {
}
public duck(String name) {
super(name);
}
public void eat() {
System.out.println("鸭子吃虫子");
}
public void drink() {
System.out.println("鸭子喝水");
}
public void swim() {
System.out.println("鸭子游泳");
}
}
package two;
public class rabbit extends animal{
public rabbit() {
}
public rabbit(String name) {
super(name);
}
public void eat() {
System.out.println("兔子吃草");
}
public void drink() {
System.out.println("兔子喝水");
}
}
package two;
public class test {
public static void main(String[] args) {
dog s=new dog("大黑");
System.out.print(s.getname());
s.eat();
duck a=new duck("小黄");
System.out.println();
System.out.print(a.getname());
a.swim();
rabbit b=new rabbit("小白");
System.out.println();
System.out.print(b.getname());
b.drink();
}
}
3:接口的成员特点
(1)成员变量
只能是常量,默认修饰符是public,static,final
package two;
public interface inter {
int a=10;
}
package two;
public class test {
public static void main(String[] args) {
System.out.println(inter.a);
}
}
这样子的演示应该很清楚的吧
(2)构造方法
接口中是没有构造方法的
(3)成员方法
JDK7以前接口中只能定义抽象方法
JDK8:接口中可以定义有方法体的方法
JDK:接口中可以定义私有方法