首页 > 编程语言 >Java方法

Java方法

时间:2024-01-15 22:55:23浏览次数:27  
标签:Java 重写 参数 子类 重载 父类 方法

Java方法

一、方法定义与调用

1、定义方法语法:

[修饰符列表] 返回值类型 方法名(形式参数列表){
	方法体; 
}
注意:
  • [] 符号叫做中括号,以上中括号[ ]里面的内容表示不是必须的,是可选
  • 方法体由Java语句构成
  • 方法定义之后需要去调用,不调用是不会执行的
  • Java都是值传递

2、方法调用语法:

类名.方法名(实际参数列表);

二、方法的重载和重写

1、重载(Overload)

在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同甚至是参数顺序不同)则视为重载。同时,重载对返回类型没有要求,可以相同也可以不同,但不能通过返回类型是否相同来判断重载

重写 总结:
  • 重载Overload是一个类中多态性的一种表现
  • 重载要求同名方法的参数列表不同(参数类型,参数个数甚至是参数顺序)
  • 重载的时候,返回值类型可以相同也可以不相同。无法以返回型别作为重载函数的区分标准

2、重写(Override)

从字面上看,重写就是 重新写一遍的意思。其实就是在子类中把父类本身有的方法重新写一遍。子类继承了父类原有的方法,但有时子类并不想原封不动的继承父类中的某个方法,所以在方法名,参数列表,返回类型(除过子类中方法的返回值是父类中方法返回值的子类时)都相同的情况下, 对方法体进行修改或重写,这就是重写。但要注意子类函数的访问修饰权限不能少于父类的。

重写 总结:
  • 发生在父类与子类之间
  • 方法名,参数列表,返回类型(除过子类中方法的返回类型是父类中返回类型的子类)必须相同
  • 访问修饰符的限制一定要大于被重写方法的访问修饰符(public>protected>default>private)
  • 重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查型异常

3、区别

方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性。重载发生在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同或者二者都不同)则视为重载;重写发生在子类与父类之间,重写要求子类被重写方法与父类被重写方法有相同的参数列表,有兼容的返回类型,比父类被重写方法更好访问,不能比父类被重写方法声明更多的异常(里氏代换原则)。重载对返回类型没有特殊的要求,不能根据返回类型进行区分。

三、可变参数

1、可变参数语法:

修饰符 返回值类型 方法名(数据类型... 变量名){ }

2、注意:

  • 这里的 可变参数变量 其实是一个数组
  • 如果一个方法 有多个参数包含可变参数可变参数要放在最后

四、递归

1、定义

所谓递归就是自己调用自己。

2、分类

  • 直接递归:方法自身调用自己
  • 间接递归:A方法调用B方法,B方法调用C方法,C方法再调用A方法

3、注意

  • 递归一定要有条件限定,保证递归能够停止下来,否则会形成死循环并发生栈内存溢出(StackOverflowError)
  • 递归中虽然限定了停止下来的条件,但是递归次数不能太多,否则也会发生栈内存溢出
  • 禁止构造方法递归

标签:Java,重写,参数,子类,重载,父类,方法
From: https://www.cnblogs.com/daimadaxia/p/17966585

相关文章

  • Java就业学习 Day 1
    Java开发能力:系统学习Java开发的第一天,终于知道Java和JavaSE的区别是什么了。。过完了Java初阶的课程,从Java历史、数据类型到二位数组。Java中阶课程面向对象这一节还没看完,有几点影响还挺深的,大一刚学Java的时候确实没怎么明白。①方法的重载:之前不知道方法重载有什么用,现在......
  • java基础
    Java基础部分基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语法,集合的语法,io的语法,虚拟机方面的语法。1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?可以有多个类,但只能有一个public的类,并且public的类名必须......
  • JAVA学习笔记 - Day3
    IDEA优化Bilibili:https://www.bilibili.com/video/BV1664y1U73u/?spm_id_from=333.337.search-card.all.click&vd_source=1939d858b6429ddf9c340541a096299d大小写联想,不区分大小写。勾选掉/显示注释(时间可调)自动导包,选择"always"选择JDK版本及编译输出配......
  • Java运用构造方法,计算并输出两点间的距离
    importjava.util.Scanner;publicclassjavaTest{publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubdoublex1,y1,x2,y2;Scannersc=newScanner(System.in);while(sc.hasNext()){x1=sc.nextDo......
  • Java中::作用及应用场景
    Java中的::Java中双冒号(::)是一种全新的操作符,也称为方法引用,它允许开发人员通过名称来引用现有方法,可以视为Lambda表达式的一种缩写应用格式:类名::方法名四种方法引用类名::静态方法名对象实例名::实例方法名类名::实例方法名构造方法引用前提条件Lambda体中只有......
  • 14_Java基础-运算符3:逻辑运算符+位
    逻辑运算符&&(与)逻辑与运算,两个变量都为真,结果为true||(或)逻辑或运算,两个变量有一个为真,结果为true!(非)如果是真,则变为假,如果是假则变为真短路运算第一个数为错,后面不执行位运算符&(和)|(或)^(异或)~(取反)位运算,不要轻易用,容易出错,效率极高<<:左移:x2》》:右移:/2......
  • java中 Happens-Before 原则
    前言并发问题有三个根本原因:cpu缓存导致可见性问题线程切换导致原子性问题:线程切换是发生于任何一条cpu指令级别的,而不是高级语言中的语句,例如i++是三个cpu指令编译器优化导致有序性问题CPU缓存导致可见性问题与Java内存模型(JMM)的问题实际上是两个相互关联的概念。CPU......
  • 盘点Gateway-Worker启动的九种报错和解决方法
    Workerman是一款开源高性能异步PHPsocket即时通讯框架。支持高并发,超高稳定性,被广泛的用于手机app、移动通讯,微信小程序,手游服务端、网络游戏、PHP聊天室、硬件通讯、智能家居、车联网、物联网等领域的开发。支持TCP长连接,支持Websocket、HTTP等协议,支持自定义协议。拥有异步Mys......
  • 对于 EI K 逆序对排列计数的另一种自然求和方法的理解
    有一个简单的\(O(n^3)\)DP,考虑\(f_{x+1,k}=\sum_{j=0}^{x}f_{x,k-j}\),利用前缀和优化即可。考虑这实际上是\(f_{x+1}(k)=f_x(k)*\frac{1-k^{x+1}}{1-k}\),于是答案实际上为:\[[x^k]f(x)=\prod_{i=1}^n\frac{1-x^i}{1-x}\]接下来的方法来自......
  • SparkStreaming in Java
    参考地址:SparkStreamingProgrammingGuide1.新建Maven项目,POM引入依赖<dependency><groupId>org.apache.spark</groupId><artifactId>spark-streaming_2.13</artifactId><version>3.5.0</ve......