函数的重载与覆盖的区别+数组定义方式+java内存的划

    重载(overload)是指同一个类中有同名的方法,但这些方法的参数列表是不同的,因此在:编译时期就可以确定调用哪个方法,因此是编译时多态的体现,需要注意:

  • 一个类中出现同名函数,只要它们的参数个数,不同的参数顺序或者参数类型不同,就称之为函数的重载--overload
  • 重载方法的访问权限(除去private)、返回值类型和抛出的异常类型可以不同,但是不能作为重载的标准,重载的标准只有参数列表。也就是说,如果参数列表相同,访问权限、返回值类型或抛出的异常类型不同,编译就会报错,因为编译器无法区分。
  • 在继承的情况下,如果基类方法的访问权限是private,那么就不能在派生类中进行方法的重载,即使在派生类中定义了同名函数,也只能看做是一个新的方法,没有起到重载的效果

例子:整数求和

public static int add(int a ,int b){

    return a+b;}

public static int add(int a,int b,int c){

  return a+b+c;}

      面试中经常会覆盖(重写override)和重载的区别,那么覆盖是什么呢?

   覆盖是指子类定义一个与父类同样的方法,但是方法实体不同。需要注意的是:

  • 子类中的覆盖方法要和父类中被覆盖的方法具有相同的函数名和参数,返回值类型(也可以是子类型),抛出的异常类(也可以是子异常)
  • 子类中方法不能是private,否则其子类知识定义了一个方法,并没有覆盖。

  那么覆盖和重载的区别就总结为:

  • 覆盖是子类方法和父类方法之间的关系;重载是同一个类中方法之间的关系
  • 覆盖要求参数列表,返回值类型(也可以是子类型)和抛出的异常类(也可以是子异常类)相同;重载要求参数列表必须不同,对返回值类型和抛出的异常类没有要求
  • 覆盖对访问权限的要求是子类方法的访问权限不能低于父类方法的访问权限;而重载对访问权限没有要求(除去private)

---------------------------------------------------------------------------

数组的定义方式

1、int[] arr = new int[3]--->通过new关键字创建了一个长度为3,元素类型时int的数组实体

元素类型[] 数组名=new 元素类型 [元素个数或数组长度]

2、元素类型[] 数组名=new 元素类型[](元素,元素,元素......)

int[] arr = new int[](1,2,3,4,5,6);

int[] arr = {1,2,3,4,5,6};--->明确数组元素的内容

-------------------------------------------------------------------------

java对内存空间的划分:栈,堆,方法去,本地方法区,寄存器

栈内存:存储的都是局部变量,只要是在方法中定义的变量都是局部变量。一旦变量的生命周期结束,该变量就被释放。

堆内存:存储的都是实体(对象),(凡是用new创建的都在堆内存中)。堆内存中的变量都有默认初始值,不同类型的不一样。int--0,double--0,boolean--false,char--'\u0000'。当实体不再使用时,就会被垃圾回收机制处理。

C++中通过析构函数来清除垃圾。而java中有垃圾回收机制,自动回收垃圾,这是java当中非常优秀的一个内存管理机制。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值