Java初学者:技术文章(类的继承)

简介: Java是面向对象编程的语言,面向对象的主要目的之一是提供可重用的代码。设想当我们开发一个非常庞大的项目时,重用已有的代码比重新编写要好得多,而且还可以节省时间,避免在程序中引入新的错误所以使用继承可以提高代码的重用性与程序的扩展性。

              Java初学者:技术文章(类的继承)

Java是面向对象编程的语言,面向对象的主要目的之一是提供可重用的代码。设想当我们开发一个非常庞大的项目时,重用已有的代码比重新编写要好得多,而且还可以节省时间,避免在程序中引入新的错误所以使用继承可以提高代码的重用性与程序的扩展性。


一般情况下,通过继承派生出的类比设计新类要容易得多。



从一个类派生出另一个类时,原始类称为基类(父类),继承类称为派生类(子类,超类)。


Java中继承的语法格式为:


public class 类名(子类) extends 类名(基类) {


}



当一个子类继承一个父类时,继承的是父类中的属性和方法,并且子类也可以重写父类中的方法,甚至可以在子类中定义父类没有的属性和方法。这样就大大提高了程序的扩展性。



继承可以完成以下几项工作:


1、可以在已有类的基础上添加功能。


2、可以给类添加数据。


3、可以重写类的方法。


需要注意的是,java中一个类只能继承一个其他的类,也就是所谓的单继承。



上面提到了子类可以对父类的方法进行重写,当父类中的方法无法满足子类的需求时,我们需要重写父类的方法来满足我们的需求。



从上面的分析不难发现,重写父类中的方法必须满足以下几个条件:


1、必须要存在一个继承关系。


2、因为是对父类已有方法的重写,所以方法的返回值类型、方法名、参数个数、参数类型、参数顺序必须要和父类的完全一致。


3、子类方法的访问权限只能大于或等于父类方法的访问权限


4、重写方法中的代码和父类的不同。



需要注意的是:在用子类实例化对象调用方法时,调用的会是重写过后子类的方法,如果想要再调用父类的方法,则需要使用关键字super来调用。



下面通过一个简单的例子来说明类的继承的使用:



例:迪迦奥特曼和小怪兽哥斯拉进行PK,直到一方的血量为0时结束战斗;


①:如果迪迦奥特曼胜利,则迪迦奥特曼要和盖亚奥特曼进行K,直到一方的血量为0时结束战斗,输出谁胜利了!


②:如果小怪兽哥斯拉胜利,则小怪兽哥斯拉要和小怪兽A进行K,直到一方的血量为0时结束战斗,输出谁胜利了!



分析:


在此例子下不难发现所涉及到的所有对象(迪迦,盖亚,哥斯拉,小怪兽A)都有共同的属性即:血量,名字,攻击力。他们也都有共同的行为即攻击对方。


所以我们可以定义一个父类(Fighter),父类中定义有属性血量,名字,攻击;定义fight攻击方法。


然后再定义两个子类(分别是小怪兽和奥特曼)继承Fighter类,需要注意的是,在此情景中,两个子类所实例化的对象所要实现的方法和父类所定义的相同,因此没有选择方法的重写。


最后在主程序中用类名初始化对象,给各属性赋值,之后按照要求实现该情景!



以下是代码的实现:


父类Fighter

15.png


子类Ult

16.png


子类Gri

17.png

Manager类

18.png


19.png




 


相关文章
|
18天前
|
监控 Cloud Native Java
Quarkus 云原生Java框架技术详解与实践指南
本文档全面介绍 Quarkus 框架的核心概念、架构特性和实践应用。作为新一代的云原生 Java 框架,Quarkus 旨在为 OpenJDK HotSpot 和 GraalVM 量身定制,显著提升 Java 在容器化环境中的运行效率。本文将深入探讨其响应式编程模型、原生编译能力、扩展机制以及与微服务架构的深度集成,帮助开发者构建高效、轻量的云原生应用。
117 44
|
12天前
|
安全 Java API
Java Web 在线商城项目最新技术实操指南帮助开发者高效完成商城项目开发
本项目基于Spring Boot 3.2与Vue 3构建现代化在线商城,涵盖技术选型、核心功能实现、安全控制与容器化部署,助开发者掌握最新Java Web全栈开发实践。
167 1
|
1月前
|
安全 Java 编译器
new出来的对象,不一定在堆上?聊聊Java虚拟机的优化技术:逃逸分析
逃逸分析是一种静态程序分析技术,用于判断对象的可见性与生命周期。它帮助即时编译器优化内存使用、降低同步开销。根据对象是否逃逸出方法或线程,分析结果分为未逃逸、方法逃逸和线程逃逸三种。基于分析结果,编译器可进行同步锁消除、标量替换和栈上分配等优化,从而提升程序性能。尽管逃逸分析计算复杂度较高,但其在热点代码中的应用为Java虚拟机带来了显著的优化效果。
57 4
|
8天前
|
安全 Java 数据建模
Java记录类:简化数据载体的新选择
Java记录类:简化数据载体的新选择
161 101
|
8天前
|
安全 Java 开发者
Java记录类:简化数据载体的新方式
Java记录类:简化数据载体的新方式
171 100
|
1月前
|
安全 IDE Java
Java记录类型(Record):简化数据载体类
Java记录类型(Record):简化数据载体类
296 120
|
1月前
|
Java 测试技术 API
2025 年 Java 开发者必知的最新技术实操指南全览
本指南涵盖Java 21+核心实操,详解虚拟线程、Spring Boot 3.3+GraalVM、Jakarta EE 10+MicroProfile 6微服务开发,并提供现代Java开发最佳实践,助力开发者高效构建高性能应用。
284 4
|
1月前
|
缓存 安全 Java
Java反射机制:动态操作类与对象
Java反射机制是运行时动态操作类与对象的强大工具,支持获取类信息、动态创建实例、调用方法、访问字段等。它在框架开发、依赖注入、动态代理等方面有广泛应用,但也存在性能开销和安全风险。本文详解反射核心API、实战案例及性能优化策略,助你掌握Java动态编程精髓。
|
12天前
|
安全 Cloud Native Java
Java 模块化系统(JPMS)技术详解与实践指南
本文档全面介绍 Java 平台模块系统(JPMS)的核心概念、架构设计和实践应用。作为 Java 9 引入的最重要特性之一,JPMS 为 Java 应用程序提供了强大的模块化支持,解决了长期存在的 JAR 地狱问题,并改善了应用的安全性和可维护性。本文将深入探讨模块声明、模块路径、访问控制、服务绑定等核心机制,帮助开发者构建更加健壮和可维护的 Java 应用。
85 0
|
1月前
|
存储 安全 Java
Java集合框架(一):List接口及其实现类剖析
本文深入解析Java中List集合的实现原理,涵盖ArrayList的动态数组机制、LinkedList的链表结构、Vector与Stack的线程安全性及其不推荐使用的原因,对比了不同实现的性能与适用场景,帮助开发者根据实际需求选择合适的List实现。