java基础之接口

接口 interface

接口的定义

[访问权限修饰符]	interface 接口名{
	//接口成员
}

接口中可以定义的成员有:

  • 方法

    • 方法都是抽象方法
    • 访问权限为public
  • 属性

    • 只能是常量,声明时同时赋值
    • 访问权限为public
    • public static final

接口的实现

关键字: implements

//A 是接口 B的实现类
public class A implements B{
	
}

  • 一个类可以实现多个接口,如果多个接口有同一个方法,那实现类只需要实现一次
  • 接口的实现和父类的继承没有关系,一个类既可以继承父类,也可以实现接口
  • 接口之间是可以有继承存在的,且接口间的继承是多继承

接口中的多态

  • 向上转型
    • 由实现类转换为接口类型
    • 是一个隐式转换,肯定会成功
    • 向上转型后,将只能访问接口中的成员
  • 向下转型
    • 由接口类型转换为实现类类型
    • 是一个显式转换,需要强制类型转换,最好加上instanceof判断能否转型成功
    • 向下转型后,将可以访问实现类中特有的成员
  • 体现
    • 由接口引用调用接口中的方法,最终实现是不同实现类的实现方式

案例

public class Test{
	public static void main(String[] args){
		Cat cat = new Cat();
		Person xiaoming = new Person();
		//将Animal的子类Cat类对象传入
		xiaoming.supplyFood(cat);
	}
}
class Person{
	
	public void supplyAnimal(Animal a) {
		if(a instanceof Cat) {
			((Cat)a).supplyFood();
		}else if(a instanceof Dog) {
			((Dog)a).supplyFood();
		}		
	}	
}

interface Animal{
	public abstract void supplyFood();

}
class Cat implements Animal{

	@Override
	public void supplyFood() {
		System.out.println("给猫喂鱼");
		
	}
	
}
class Dog implements Animal{

	@Override
	public void supplyFood() {
		System.out.println("给狗吃肉");
		
	}

}

输出结果(https://img-blog.csdnimg.cn/20190507193351195.png)

JDK1.8 接口中的新特性

default

java8对接口添加一个新特性,可以使用关键字default来修饰接口中的方法,表示这个方法有默认实现,对这个方法添加方法体。实现类在实现接口的时候,可以不实现这个default方法

static

java8对接口添加一个新特性,可以使用关键字default来修饰接口中的方法,表示这个方法是静态方法,接口中的静态方法也必须有方法体来实现。

接口中的静态方法,必须由接口来调用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值