Java-010 接口

一、定义接口
[修饰符] interface 接口名 [extends 父接口名列表] {
       [public] [static] [final] 常量;
       [public] [abstract] 方法;
}


二、接口的继承

interface interfaceA{
	int one = 1;
	void sayA();
}

interface interfaceB{
	int two = 2;
	void sayB();
}

interface interfaceC extends interfaceA, interfaceB{
	int three = 3;
	void sayC();
}

public class app {
	public static void main(String[] args) {
		System.out.println(interfaceC.one);
		System.out.println(interfaceC.two);
		System.out.println(interfaceC.three);
	}
}

在这里插入图片描述


三、接口的实现
[修饰符] class <类名> [extends 父类名] [implements 接口列表] {
}

每个类只能实现单重继承,而实现接口时,一次则可以实现多个接口

interface Calculate{
	final float PI = 3.14159f;
	float getArea(float r);
	float getCircumference(float r);
}

interface GeometryShape{
	final float PI = 3.14159f;
	float getArea(float r);
	float getCircumference(float r);
	void draw();
}

public class Circ {
	public float getArea(float r) {
		float area = Calculate.PI*r*r;
		return area;
	}
	
	public float getCircumference(float r) {
		float circumference = 2*Calculate.PI*r;
		return circumference;
	}
	
	public void draw() {
		System.out.println("画一个圆形!");
	}
	
	public static void main(String[] args) {
		Circ circ = new Circ();
		float r = 7;
		float area = circ.getArea(r);
		System.out.println("圆的面积为:"+area);
		float circumference = circ.getCircumference(r);
		System.out.println("圆的周长为:"+circumference);
		circ.draw();
	}
}

在这里插入图片描述


四、接口和抽象类
接口和抽象类的共同点如下:
(1)接口与抽象类都不能被实例化,能被其他类实现和继承。
(2)接口和抽象类中都可以包含抽象方法,实现接口或继承抽象类的普通子类都必须实现这些抽象方法。
接口和抽象类的用法差别如下:
(1)接口中只能包含抽象方法,不能包含普通方法;抽象类中可以包含普通方法。
(2)接口中不能定义静态方法;抽象类中可以定义静态方法。
(3)接口中只能定义静态常量属性,不能定义普通属性;抽象类里可以定义静态常量属性,也可以定义普通属性。
(4)接口不能包含构造器;抽象类可以包含构造器,抽象类里的构造器是为了让其子类调用并完成初始化操作。
(5)接口中不能包含初始化块,但抽象类可以包含初始化块。
(6)一个类最多只能有一个直接父类,包含抽象类;但是一个类可以实现多个接口。


五、接口回调

interface People{					//定义接口
	void Say(String s);
}

class Teacher implements People{	//Teacher实现接口

	@Override
	public void Say(String s) {
		System.out.println(s);
	}
	
}

class Student implements People{	//Student实现接口

	@Override
	public void Say(String s) {
		System.out.println(s);
		
	}
	
}

public class app1 {
	public static void main(String[] args) {
		People tea;				//声明接口变量
		tea = new Teacher();	//接口变量中存放对象的引用
		tea.Say("我是老师");		//接口回调
		tea = new Student();	//接口变量中存放对象的引用
		tea.Say("我是学生");		//接口回调
	}
}

在这里插入图片描述


六、接口与多态

interface Animals{
	void Eat(String s);
}

class Dog implements Animals{

	@Override
	public void Eat(String s) {
		System.out.println("我是小狗,我爱吃"+s);
		
	}
	
}

class Cat implements Animals{

	@Override
	public void Eat(String s) {
		System.out.println("我是小猫,我爱吃"+s);
		
	}
	
}

public class Example {
	public static void main(String[] args) {
		Animals ani;
		ani = new Dog();
		ani.Eat("骨头");
		ani = new Cat();
		ani.Eat("鱼");
	}
}

在这里插入图片描述


七、接口参数

interface Eatfood{
	void Eatfood();
}

class Chinese implements Eatfood{

	@Override
	public void Eatfood() {
		System.out.println("中国人习惯用筷子");
		
	}
	
}

class America implements Eatfood{

	@Override
	public void Eatfood() {
		System.out.println("美国习惯用刀叉");
		
	}
	
}

class EatMethods{
	public void lookEatMethods(Eatfood eat) {		//定义接口参数类型
		eat.Eatfood();								//接口回调
	}
}

public class Example2 {
	public static void main(String[] args) {
		EatMethods em = new EatMethods();
		em.lookEatMethods(new Chinese());
		em.lookEatMethods(new America());
	}
}

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值