Java 2023.7.12(方法重写/重载、多态、抽象类/方法、instanceof)


在Java编程语言中,方法重写(Method Overriding)和重载(Method Overloading)、多态(Polymorphism)、抽象类(Abstract Class)与抽象方法(Abstract Method)以及`instanceof`关键字是核心的面向对象特性。让我们深入探讨这些概念。 ### 方法重写(Method Overriding) 方法重写发生在子类中,它允许子类重新定义父类中的某个已有的方法。这样做可以扩展或修改父类的行为。重写规则包括: 1. 子类方法必须与父类方法有相同的名称、返回类型和参数列表。 2. 子类方法的访问权限不能低于父类方法。 3. 子类方法不能比父类方法更限制(即不能是final、static或private)。 4. 父类的非final方法可以被重写。 例如,宠物类(Pet)有一个`speak()`方法,主人类(Owner)继承宠物类并重写`speak()`方法,使其具有不同的行为。 ### 方法重载(Method Overloading) 方法重载是指在同一个类中可以有多个同名方法,但它们的参数列表不同(参数个数、类型或顺序不同)。编译器会根据传入的参数来决定调用哪个方法。 例如,宠物类可能有两个同名的`feed()`方法,一个接收食物类型作为参数,另一个接收食物量。 ```java public void feed(String foodType) { ... } public void feed(int quantity) { ... } ``` ### 多态(Polymorphism) 多态是面向对象的三大特性之一,它允许我们使用父类类型的引用指向子类对象。这样,同一个方法调用可以产生不同的结果,具体取决于实际的对象类型。多态分为编译时多态(方法重载)和运行时多态(方法重写)。 ### 抽象类(Abstract Class)与抽象方法(Abstract Method) 抽象类是不能实例化的类,它通常用于定义一组公共接口,由其子类实现具体的功能。抽象方法没有方法体,只有方法签名,必须在抽象类中声明。如果一个类包含至少一个抽象方法,那么该类必须声明为抽象类。 例如,我们可以定义一个抽象的宠物类(Pet),包含抽象方法`speak()`和`eat()`,然后让具体的猫类(Cat)和狗类(Dog)实现这些方法。 ```java abstract class Pet { abstract void speak(); abstract void eat(); } class Cat extends Pet { public void speak() { ... } public void eat() { ... } } class Dog extends Pet { public void speak() { ... } public void eat() { ... } } ``` ### `instanceof` 关键字 `instanceof`关键字用于判断一个对象是否是特定类或其子类的实例。它可以返回一个布尔值,表示对象能否被转换为指定类型。 ```java Pet pet = new Cat(); // 宠物实例化为猫 if (pet instanceof Cat) { Cat myCat = (Cat) pet; // 类型转换 myCat.speak(); // 调用猫特有的方法 } ``` 在这个例子中,我们通过`instanceof`检查`pet`是否是`Cat`的实例,如果是,则进行类型转换并调用特定于猫的方法。 通过理解和应用这些概念,开发者可以创建灵活且可扩展的代码结构,以适应各种需求变化。在宠物主人看病的场景中,抽象类和多态性可以用来设计一个通用的“病人”类,而不同的宠物类可以作为其子类,每个宠物类都有自己的“治疗”方法。这样,主人类可以处理任何类型的宠物,并调用相应的治疗方法,实现代码的复用和灵活性。
























- 1


- 粉丝: 1
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 软件系统日常运维服务方案.doc
- 鼎信诺审计软件教程1教材课程.ppt
- spring基础功能分享.ppt
- 人工智能的历史、现状、前景演示教学.ppt
- 2048基于JAVA课设设计.pdf
- 贝塞尔大地主题正反算及其编程.doc
- 数据库应用期末.doc
- 数据库项目设计实验报告.doc
- 办公自动化设备与机电知识数码相机.doc
- 企业网站策划书.docx
- 机电控制与PLC9 PPT.ppt
- 2023年信息学竞赛计算机基础知识讲义范奂垒.doc
- 计算机视觉在产品检测中的应用的开题报告.docx
- Access-VBA数据库编程ppt课件(1).ppt
- 第一计算机辅助设计与仿真技术概述 ppt.pptx
- 基于并发技术的Web-Service的设计与研究的开题报告.docx


