Java---接口详解

目录

 1:接口的介绍

 2:接口的定义与使用

    (1)接口的定义

    (2)接口的使用

          3:接口的成员特点

   (1)成员变量

            (2)构造方法

            (3)成员方法


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:接口中可以定义私有方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

稻子永不倒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值