Java编程:接口、抽象类、多态及数组应用与开发注意要点
// 1)接口Lion与实现类LionClass interface Lion { // 获取狮子相关信息的方法 String get(); } class LionClass implements Lion { private String name; public LionClass(String name) { this.name = name; } @Override public String get() { return "This is a lion named " + name; } } // 2)抽象类Amphibian及子类Frog、Toad abstract class Amphibian { // 抽象方法:陆上爬行 public abstract void crawl(); // 抽象方法:水中游泳 public abstract void swim(); } class Frog extends Amphibian { private String name; public Frog(String name) { this.name = name; } @Override public void crawl() { System.out.println(name + " is crawling on land."); } @Override public void swim() { System.out.println(name + " is swimming in water."); } // 特有方法:跳跃 public void jump() { System.out.println(name + " jumps quickly!"); } } class Toad extends Amphibian { private String name; public Toad(String name) { this.name = name; } @Override public void crawl() { System.out.println(name + " is slowly crawling."); } @Override public void swim() { System.out.println(name + " is floating and swimming."); } // 特有方法:夜间活动 public void nocturnal() { System.out.println(name + " becomes active at night."); } } // 测试类 public class AnimalTest { public static void main(String[] args) { // 创建Frog和Toad对象,并向上转型为Amphibian Amphibian frog = new Frog("Kermit"); Amphibian toad = new Toad("Toadie"); // 调用父类声明的抽象方法,实际执行子类实现 frog.crawl(); frog.swim(); toad.crawl(); toad.swim(); // 向下转型以调用特有方法 ((Frog) frog).jump(); ((Toad) toad).nocturnal(); // 3)创建存储Amphibian类型元素的数组 Amphibian[] amphibians = new Amphibian[4]; amphibians[0] = new Frog("Green Frog"); amphibians[1] = new Toad("Brown Toad"); amphibians[2] = new Frog("Jumping Joe"); amphibians[3] = new Toad("Night Crawler"); // 遍历数组并调用每个对象的crawl()和swim()方法 for (Amphibian a : amphibians) { a.crawl(); a.swim(); } // 示例:使用Lion接口 Lion lion = new LionClass("Simba"); System.out.println(lion.get()); } } 我在以往的开发过程中,碰到过以下几点需要格外小心处理的地方: - 父类引用指向子类对象时,无法直接调用子类特有的非重写方法,必须进行类型转换。 - 数组大小需提前确定,若需动态扩容应考虑使用ArrayList等集合类替代。 - 向下转型存在风险,应确保对象真实类型匹配,否则会抛出ClassCastException。 ######[AI写代码神器 | 746点数解答 | 2025-11-14 15:01:19]
- Java 实现复制粘贴功能:打造简易文本复制粘贴程序(GPT | 1497点数解答 | 2024-08-25 09:40:33)411
- 解决数据库“dm.jdbc.driver.dmexception: 数据溢出”问题的全步骤指南(阿里通义 | 598点数解答 | 2024-10-15 15:48:38)313
- 达梦数据库数据溢出问题排查及多维度解决方法(阿里通义 | 403点数解答 | 2024-10-15 15:48:41)1164
- Java 实战:创建 Vehicle 接口并在 Bike 类实现,T4 类调用启动与停止方法(字节豆包 | 130点数解答 | 2024-09-19 17:40:54)419
- Python 实现移位与仿射密码:精准加密解密及关键逻辑解析(字节豆包 | 798点数解答 | 2024-12-18 15:55:47)257
- Java 实现控制台打印带系统时间和当前日期标记的日历( | 1467点数解答 | 2024-03-12 11:30:08)290
- 工程师必知:软件系统用户文档编写九大要点揭秘(百度文心 | 350点数解答 | 2023-11-09 18:23:53)193
- Express 应用创建与数据查询 API 实现:附代码示例与注意要点(字节豆包 | 387点数解答 | 2024-12-05 09:09:59)227
- Android开发必知:Kotlin抽象类与接口的深度剖析及区别对比(百度文心 | 504点数解答 | 2023-11-09 17:33:25)233
- C++实现计算最少添加数字次数以匹配两个数组元素(字节豆包 | 714点数解答 | 2026-03-08 19:44:54)16
- "Java Code: Uncovering Stock Statistics through CSV File Reading"(字节豆包 | 66点数解答 | 2024-11-13 15:31:04)323
- Java开发:深入解析Lock接口及其对比同步的六大优势(百度文心 | 406点数解答 | 2023-11-09 17:20:58)296