新闻详情

新闻详情

首页 / 资讯中心 / 详情

JAVA 联想学习(2)

发布时间:2026/9/6 3:49:54来源:尧图网络
JAVA 联想学习(2)
package corepractice; interface Flyable { //interface 声明这是一个接口 Flyable 接口名大驼峰命名 void fly(); void land(); default void preCheck() { //default 默认方法。实现类可以不重写直接用 //------- System.out.println( → 飞行前检查引擎、油量、天气 ); } static void showPrinciple() { //属于接口本身 //为什么方法名这样设置----- System.out.println( 飞行原理伯努利定律机翼上下气压差产生升力\n); } } //---------接口定义部分 class Bird implements Flyable { //表示Bird类实现了Flyable接口 String name; Bird(String name) { this.name name; //成员变量name参数name } Override //注释 重写接口/父类 public void fly() { System.out.println(鸟 name 拍打翅膀飞向天空); } Override public void land() { System.out.println(鸟 name 落在树枝); } } class Plane implements Flyable { String model; Plane(String model) { this.model model; } Override public void fly() { System.out.println(飞机 model 引擎轰鸣起飞); } Override public void land() { System.out.println(飞机 model 落在跑道上); } void refuel() { System.out.println(加油站加油); } } //----实现类部分 interface Launchable { //新接口 void launch(); } class Rocket implements Flyable, Launchable { //多接口用逗号,分割 //同时实现两个接口 String name; Rocket(String name) { this.name name; } Override public void fly() { System.out.println(火箭 name 垂直升入太空); } Override public void land() { System.out.println(火箭 name 着陆); } Override public void launch() { System.out.println(火箭 name 点火发射); } } //-------实现类部分多接口 class Sky { void letItFly(Flyable f) { f.preCheck(); f.fly(); f.land(); } } //------使用类部分 public class Flydemo { public static void main(String[] args) { System.out.println(让飞机飞); Flyable.showPrinciple();//调用static Sky sky new Sky(); System.out.println(----让鸟飞-----); Flyable f1 new Bird(小燕子); sky.letItFly(f1); System.out.println(----让飞机飞-----); Flyable f2 new Plane(波音747); sky.letItFly(f2); System.out.println(----让火箭飞----); Flyable f3 new Rocket(长征五号); sky.letItFly(f3); System.out.println(飞机编队展示); Flyable[] formation { //Flyable[] 类型的数组名 变量数组名 new Bird(大雁), new Plane(F-22战斗机), new Rocket(神舟飞船)//逗号连接 }; for (int i 0; i formation.length; i) { System.out.println(编队第 (i 1) 位); formation[i].fly(); } } } /* -----命名规则----- 类/接口 大驼峰每个单词首字母大写 如Bird Flyable Sky 方法 小驼峰第一个小写其余大写 如fly preCheck 变量/字段 小驼峰 如name model f1 常量 全部字母大写下划线分割 如MAX_SPEED 包名 全小写点分割 如com.example.demo 构造方法 和类名一模一样 -----前缀----- pre 在...之前 preCheck preProgess post 在...之后 postHandle postInit get 获取值 getName() set 设置值 setName() is/has 返回布尔 isEmpty() on 事情触发时 onClick() onSuccess() do 真正执行动作 doConnect() show 展示/打印 showPrinciple() create/build 创建对象 createUser() */ /* -----代码结构----- 1.Flyable接口 default和static 要写具体实现代码其他不用它俩有什么区别 2.实现接口时要用implements,Override覆盖内部还需要public声明这里的public起什么作用 3.使用类需要创建一个类将接口内容进行汇总直接调用 class Sky { void letItFly(Flyable f) { f.preCheck(); f.fly(); f.land(); } } 接口定义一个对象f,f调用内部函数为什么不在main内直接调用呢 4.程序入口 Flyable f1 new Bird(小燕子); 为什么一个接口对象可以指向一个类对象 ----相当于父类子类 sky.letItFly(f1); 这是可以自动内部识别出f1吗如果是一个未定义的类呢 */ /* -----解答-------- 1.(1).defult直接写出实现代码后续可以不重写且自动继承一般的必须重写都不自动继承//除抽象类 如果同时有多个接口有同名 default 方法实现类必须重写否则编译报错 (2).defult通过对象名调用static通过接口名调用 (3).defult 的this指向实现类对象static没有this (4).前者为 给接口升级时不破坏已有实现类 后者为 提供和接口相关的工具方法 2.接口内默认访问限制public,类内不写修饰符默认包私有package-private) 而子类/实现类重写方法时访问权限不能比父类/接口更严格 3.(1).解耦:调用者不关心具体类型 (2).真实项目缩影 用户请求 → Controller层 → Service层 → DAO层 → 数据库 (3).统一处理多个对象 4. 继承 接口 关键字 extends implements 引用类型 父类 接口 实际对象 子类 实现类 运行时行为 调用子类重写的方法 调用实现类的方法 本质 多态​ 多态​ 5.动态绑定 */ /* ------类比------ 继承 VS 接口 关系 is-a can-do 例子 Bird extends Animal Bird implements Flyable 数量 只能继承一个父类 可以实现多个接口 关注点 代码复用 行为规范只定义要做什么 class Bird extends Animal implements Flyable, Swimmable { // 鸟是一种动物继承同时能飞能游接口 } 接口 VS 多态 接口是多态最常见的载体 ...... 还有抽象类 回调函数 USB */ /* --------动态绑定-------- 条件 说明 你的代码里 1. 有继承/实现关系 类和类之间或类和接口之间 Bird implements Flyable 2. 有方法重写 子类/实现类重写了父类/接口的方法 Bird 重写了 fly() 3. 有向上转型 父类/接口引用指向子类/实现类对象 Flyable f1 new Bird() 4. 通过引用调用方法 通过那个父类/接口引用来调用 f1.fly() */ //9-5-1
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

语音+大模型指挥机器人:LLM Agent × ROS2 端到端实战 2026/9/6 4:25:58

语音+大模型指挥机器人:LLM Agent × ROS2 端到端实战

语音大模型指挥机器人:LLM Agent ROS2 端到端实战 你对着麦克风说"左转九十度",Gazebo 里的小车真的转了 90; 你问"前面有障碍物吗",机器人用激光雷达的真实数据开口回答你。 全程离线,没有一个请…

阅读更多 →
当数字员工与熊猫智汇相结合,如何实现销售增长的双赢局面? 2026/9/6 4:25:58

当数字员工与熊猫智汇相结合,如何实现销售增长的双赢局面?

数字员工通过优化企业的业务流程、降低了运营成本大幅提升。特别是借助AI销冠系统,数字员工能够承担重复性任务,进而使销售团队专注于更复杂的客户需求和高价值业务。这种自动化不光解决了人力资源的短缺,还提升了客户互动的及时性和精准度。…

阅读更多 →
AI音频超分修复:老磁带与低质MP3如何进阶CD级音质 2026/9/6 4:25:58

AI音频超分修复:老磁带与低质MP3如何进阶CD级音质

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
为什么有的2D横版游戏角色动画要做上下半身拆分? 2026/9/6 4:25:58

为什么有的2D横版游戏角色动画要做上下半身拆分?

什么时候拆分成上下半身移动同时可以射击/挥武器 下半身播放走路、奔跑、跳跃;上半身独立做瞄准、开枪、挥刀。不拆分就要做大量组合动画,素材工作量暴增。上半身需要跟随鼠标旋转瞄准 射击类游戏,上身旋转瞄准,腿部只处理行走逻辑…

阅读更多 →
Harness-of-Harness:AI智能体多日自主软件开发与持续改进 2026/9/6 4:25:58

Harness-of-Harness:AI智能体多日自主软件开发与持续改进

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
8核16G云服务器实战指南:从选型到部署性能调优全解析 2026/9/6 4:22:58

8核16G云服务器实战指南:从选型到部署性能调优全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞