接口的详解

接口

Java中,使用interface关键字来定义接口

接口中的方法都只有声明,没有方法主体

接口中所有的方法都是抽象方法 具体的实现都要在子类里完成

接口可以继承其他的接口,并且可以继承多个

从接口的实现者角度看,接口定义了可以向外部提供的服务
从接口的调用者角度看,接口定义了实现者能提供那些服务

接口不能创建实例,但是可以用来声明引用变量的类型

定义接口

public interface TestInterface { //访问修饰符只能是public或者是默认的
 //接口中不存在私有
 void age(); //方法只能是public abstract 可以写也可以不写
 int AGE = 18; //接口中属性只能是常量 用public static final修饰 可写可不写
}

接口的实现

实现单个接口

public interface TestInterface { //访问修饰符只能是public或者是默认的
	//接口中不存在私有
	void age(); //方法只能是public abstract 可以写也可以不写
	int AGE = 18; //接口中属性只能是常量 用public static final修饰 可写可不写
}
class TestClass implements TestInterface{  //使用implements关键字实现接口的连接

	@Override
	public void age() { //实现接口类中定义的抽象类 重写了父类中的抽象类
		System.out.println(AGE);//可以使用接口里面的常量		
	}
	
}

实现多个父接口

public class TestInerfaces {
	public static void main(String[] args) {
		Name name = new Student1(); //不能new接口 接口是抽象的 Name接口里
		Age age = new Student1();//可以用两个接口new一个对象
		name.say();
		age.can();
	}
}
interface Name{
	void say();
}
interface Age{
	int AGE = 18;
	void can();
}
class Student1 implements Name,Age{     //实现类可以实现多个父接口
	@Override
	public void can() {
		System.out.println("18可以学驾照了");	
	}
	@Override
	public void say() {
		System.out.println("学生说他的名字是。。。");
	}
	public void play(){ //可以写自己的方法
		System.out.println("玩电脑");
	}
}

class teacher implements Name,Age{
	@Override
	public void can() {
		System.out.println("老师可以教学生");	
	}
	@Override
	public void say() {
		System.out.println("老师的名字是。。。");
	}
}

接口可以多继承
Java中类没有多继承只有单继承,但是Java中接口存在多继承

public class TestInterface1 {
}
interface A{
	void a();
}
interface B{
	void b();
}
interface C extends A,B{    //接口可以实现多继承,这里的接口C继承了接口A和B
	void c();
}
class D implements C{      //D类实现了C接口 (其中就包括a,b,c抽象方法)
	@Override
	public void a(){
		System.out.println("a");
	}
	@Override
	public void b() {
		System.out.println("b");
	}
	@Override
	public void c() {
		System.out.println("c");		
	}
}

抽象类和接口之间的共同点和区别

区别

抽象类中既可以有抽象方法,也可以有具体方法;接口中只能有抽象方法(Java8之前)
抽象类中的构造方法可有可无;接口中不能定义构造方法
抽象类中可以定义成员变量;接口中只能有公有的、静态的常量
继承抽象类需要满足单一继承原则;实现接口可以同时实现多个
.

共同点
都可以包含抽象方法;都不能用于实例化(创建对象)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值