当前位置: 首页 > news >正文

Java学习备忘录(四)方法篇(原创)

一.方法

1. 方法是一个类的对象中用来完成某个任务的一组相关的语句。它们用来完成该对象中或其他对象中的特定任务,并且使用了一种在其他语句中用到的函数和子程序的方法。
参数传递是值传递。当一个对象做为一个参数传递到方法中时,参数的值就是对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用不能改变,即参数的值是不变的。

2. this关键字用来指向当前对象或类实例,可以在任何出现对象引用的地方使用this指针。Java语言自动将实例变量,方法调用与关键字this相联系。
3.
重载方法
同一个类中或有继承关系的类中,几个具有相同行为但不同参数的方法构成重载方法。当调用时根据参数的类型和数量进行区分,选择合适的方法。
且参数表必须有明显的不同,避免由 float自动转换到double这样的语义混淆,仅返回值不同不足以区分重载方法。

4.重写方法
若子类中定义的方法,其名称,返回值类型及参数表正好与父类中方法的名称,返回值类型及参数表完全相同,则称新方法重写了旧方法。
即得到与变量的运行时类型(变量所引用的对象的类型)相关的行为,而不是与变量的编译时类型相关的行为。C++中要加关键字VirtualJava中称为重写方法。
重写方法的规则:

1)方法名称,返回值类型,参数的类型,个数和顺序与它重写的方法一致。

2)重写方法不能比被重写方法的访问性差。(public, private, protected

(3 ) 重写方法不能比被重写方法抛出更多异常。

二.构造函数
方法名称必须与类名称完全相同,且不含返回值。

new创建一个对象,进行以下操作:
1
)为对象分配存储空间

2)初始化对象实例,要么赋初值,要么用默认值(数字为0,对象为null,布尔型用false,字符用’\0’

3) 调用该类的构造函数。
一个类可以有多个构造函数,由new语句中的参数决定调用哪一个。一个类至少有一个构造函数,若没有则Java自动提供一个默认构造函数,但是没参数表,函数体为空,可用new Xxx()方式调用。当自己定义了一个带参数的构造函数后,默认构造函数失去,用new Xxx()方式会出错。有多个构造函数时,可调用其中一个实现另一个。
Java
中执行子类构造函数前要求先调用父类构造函数版本。可通过在子类构造函数第一行用super()的方式调用一个特定的父类构造函数作为子类构造函数的一部分。用不同的参数决定具体调用哪一个。用super()调用时,调用父类默认构造函数,若父类无默认构造函数,则出错。
同理,superthis一样必须放在构造函数的第一行,但是不能放在同一个单独行。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • AI服务器环境:OpenCV++与spleeter人声音伴奏分离docker环境/源码地址
  • AI模型C++部署:【配置OpenCV4++环境】与【三种在 C++ 中部署 TensorFlow 模型的方式】【准备阶段】
  • 一个文章在线编辑器的实现
  • AI模型C++部署:TensorFlow2图像分类模型之金钱豹大战齐天大圣【OpenCV纯C++接口调用tensorflow生成的pb模型】【源码已开源】
  • 失败得要命,我想我还是太嫩了。
  • 目标检测系列算法复现1:Darknet-YOLO-CUDA11-OpenCV4(Ubuntu平台)
  • 一个Java读取串口值的类(收藏)
  • 目标检测系列算法复现2:Darknet-YOLO-CUDA11-OpenCV4(Ubuntu平台)推理测试
  • AI模型部署到Android端:模拟器App的生成与tensorflow模型的输入输出调试
  • 加密和解密会员注册密码
  • 安装Hyper-V、WSL与虚拟机调用NVIDIA-GPU进行深入学习计算
  • AI模型设计:C++版本tensorflow_gpu模型构建与训练
  • NVIDIA-CUDA-CUDNN-TENSORRT深度学习编程学习文档
  • 一篇令所有游戏圈的兄弟汗颜的文章
  • AI模型设计:Ubuntu18.04完美编译在阿里云镜像源tensorflow C++并实现深度学习计算【编译方法与测试深度学习C++源码已开源】
  • Codepen 每日精选(2018-3-25)
  • Date型的使用
  • idea + plantuml 画流程图
  • java8-模拟hadoop
  • JavaScript DOM 10 - 滚动
  • Javascript设计模式学习之Observer(观察者)模式
  • js算法-归并排序(merge_sort)
  • Magento 1.x 中文订单打印乱码
  • Mocha测试初探
  • spring boot 整合mybatis 无法输出sql的问题
  • spring boot下thymeleaf全局静态变量配置
  • Spring Cloud Alibaba迁移指南(一):一行代码从 Hystrix 迁移到 Sentinel
  • 分享几个不错的工具
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 如何邀请好友注册您的网站(模拟百度网盘)
  • 软件开发学习的5大技巧,你知道吗?
  • 使用SAX解析XML
  • 我这样减少了26.5M Java内存!
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • $ is not function   和JQUERY 命名 冲突的解说 Jquer问题 (
  • %@ page import=%的用法
  • (2024,Flag-DiT,文本引导的多模态生成,SR,统一的标记化,RoPE、RMSNorm 和流匹配)Lumina-T2X
  • (4)Elastix图像配准:3D图像
  • (二)JAVA使用POI操作excel
  • (附源码)springboot太原学院贫困生申请管理系统 毕业设计 101517
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (算法)Travel Information Center
  • (五)MySQL的备份及恢复
  • (译) 函数式 JS #1:简介
  • *(长期更新)软考网络工程师学习笔记——Section 22 无线局域网
  • *_zh_CN.properties 国际化资源文件 struts 防乱码等
  • .gitignore文件_Git:.gitignore
  • .net core 控制台应用程序读取配置文件app.config
  • .Net Core 中间件与过滤器
  • .net php 通信,flash与asp/php/asp.net通信的方法
  • .NET/C# 编译期能确定的字符串会在字符串暂存池中不会被 GC 垃圾回收掉
  • .NET/C# 获取一个正在运行的进程的命令行参数
  • .NET/C# 使用 ConditionalWeakTable 附加字段(CLR 版本的附加属性,也可用用来当作弱引用字典 WeakDictionary)
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)...
  • /etc/motd and /etc/issue