java进阶(3)--接口
一、基本概念
1、接口为引用数据类型,编译后也是class字节码文件
2、接口是完全抽象的,(抽象类是半抽象的),属于特殊的抽象类
3、接口定义方法:[修饰符列表]interface 接口名{}
4、接口所有元素都是public公开的
5、接口中的public abstract修饰符是可以省略的
6、接口中的抽象方法是不能有方法体的
7、接口中的常量的public static final是可以省略的
8、实现使用implements关键字完成,接口与类之间叫做实现
9、类可以实现多个接口,类似多继承
二、使用注意、举例
1、接口支持多接口继承
2、接口只包含两部分一部分常量,一部分抽象方法
3、当一个非抽象的类实现接口的话,必须将所有抽象方法全部实现
重写抽象方法后正常
4、接口与接口之间进行强制类型转换时,没有继承关系,也可以强转,但可能出现ClassCastException异常
5、extends与implements可以共存,extends在前,implements在后
三、接口在开发中的
1、提高程序扩展性
2、解耦合
3、符合面向对象(接口),符合ocp原则,接口使用多态
4、举例说明
1 package cnblogs; 2 public class TestAdvance04interface02 { 3 public static void main(String[] args) { 4 //创建厨师 5 FoodNeum cooker1=new ChinaCooker(); 6 //创建顾客 7 Customer customer=new Customer(cooker1); 8 //点餐 9 customer.order(); 10 } 11 } 12 class Customer{ 13 //养成封装习惯,顾客里有一个菜单,customer has a Foodnium,但凡is a可以设置为继承,has a可以设置为属性 14 private FoodNeum foodNeum; 15 public Customer(){}; 16 //getter and setter,配合封装使用,是王八的屁股-规定 17 public FoodNeum getFoodNeum() { 18 return foodNeum; 19 } 20 public void setFoodNeum(FoodNeum foodNeum) { 21 this.foodNeum = foodNeum; 22 } 23 //构造方法,用户获取初始,实例化 24 public Customer(FoodNeum foodNeum){ 25 this.foodNeum=foodNeum; 26 }; 27 //提供点餐方法 28 public void order(){ 29 foodNeum.ShiZhiChaoJiDan(); 30 foodNeum.YuXiangRouSi(); 31 } 32 } 33 interface FoodNeum{ 34 void ShiZhiChaoJiDan(); 35 void YuXiangRouSi(); 36 } 37 class ChinaCooker implements FoodNeum{ 38 public void ShiZhiChaoJiDan(){ System.out.println("中餐西红柿炒鸡蛋"); } 39 public void YuXiangRouSi(){ System.out.println("中餐鱼香肉丝"); } 40 } 41 class AmeicaCooker implements FoodNeum{ 42 public void ShiZhiChaoJiDan(){ System.out.println("西餐西红柿炒鸡蛋"); } 43 public void YuXiangRouSi(){ System.out.println("西餐鱼香肉丝"); } 44 }
查看运行结果
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了