Java面向对象之接口

接口

我们都知道在Java中一个子类只能继承一个父类,这是Java的单继承特性,但在日常生活中,多继承问题在所难免,为了解决多继承的问题,Java引入了接口的概念。接口由关键字interface定义,语法如下:

[访问修饰符]interface 接口名 [extends 父接口1,父接口2---]

注意:
1.关于接口的访问修饰符,可以是public和缺省修饰符,如果省略public修饰符,系统默认使用缺省访问修饰符。
2.接口中只能定义共有的,静态的常量,并且这些常量默认都是共有的,静态的,终极的。
3.接口中的方法只能是共有的抽象方法,并且这些方法默认都是共有的,抽象的。
4.接口只能继承多个接口,接口不能继承类,也不能实现其他接口。

接口和抽象类的区别

相同点
1.接口和抽象类都不能被实例化。
2.接口和抽象类都可以包含抽象方法。
不同点
1.接口中只能包含抽象方法,而抽象类则完全可以包含普通方法。
2.接口中不能定义静态方法,而抽象类中可以定义静态方法。
3.接口只能定义静态常量,不能定义普通变量或非静态的常量,而抽象类中则可以定义不同的属性,也可以定义静态的属性。
4.接口中不包含构造器,而抽象类中可以包含构造器。
5.一个类最多只能有一个父类,包括抽象类,而一个类可以实现多个接口。

接口的实现

1.创建食物接口(Food),该接口被所有的食物类所实现。在该接口中定义getFood()方法。

package com.test;

public interface Food {
void getFood();
}

2.创建麦香鸡类(McChicken) ,该类实现Food接口,并重写Food接口的getFood)方法。

package com.test;

public class McChicken implements Food{

	public void getFood() {
		System.out.println("来一份麦辣鸡块");
		
	}

}

3.创建薯条类(Chips) ,该类实现Food接口,并重写Food接口的getFood)方法。

package com.test;

public class Chips implements Food{

	public void getFood() {
		System.out.println("来一份薯条");
		
	}

}

4.创建生产食品的工厂类(FoodFactory) ,在该类中定义静态方法createFood(String type)方法,在该方法中通过传入该方法参数的字符串值,判断用户需要何种食物,如果工厂中有该食物,则创建该食物对象,否则给出友好提示信息。

package com.test;

public class FoodFactory {
	public static Food createFood(String type) {
		
		if(type.equals("mcchicken")) {
			return new McChicken();
		}else if(type.equals("chips")) {
			return new Chips();
		}else {
			System.out.println("对不起,没有该食物");
			return null;
		}
	}

5.创建客户,在该类的主方法中通过食物工厂类创建客户需要的食物。

package com.test;

public class Test {

	public static void main(String[] args) {
Food mcchicken=FoodFactory.createFood("mcchicken");
mcchicken.getFood();
Food chips=FoodFactory.createFood("chips");
chips.getFood();
	}
}

运行结果如下:
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值