手记

关于重载和重写的理解

-----什么是重载函数?
是同一个函数名可以对应多个函数的实现:
例如,可以给函数名add()定义多个函数实现,该函数的功能是求和,即求两个操作数的和。
其中,一个函数实现是求两个int型数之和,
另一个实现是求两个浮点型数之和,
再一个实现是求两个复数的和。
每种实现对应着一个函数体,这些函数的名字相同,但是函数的参数的类型不同。
这就是函数重载的概念。
重载的含义:重载就是方法名称相同,参数或者返回值类型不同。

public class W{
void add(){
}
void add(int i){//重载 
}
void add(int i,double i)//重载
}

------什么是重写?

//一定是继承的过程

class A
{
public void overWrite()
{
System.out.print("A")
}
}

public class B extends A
{
public void overWrite()
{
System.out.print("B")//输出和父类不一样
}
public static void main(String[] args)//主方法
{
A a=new B();   //重写父类的方法

a.overWrite();//重写父类的属性.
}
}

输出B,这就是重写,主要发生在之类重写父类的方法和属性.
静态方法不能被重写
私有方法不能被重写
异常不能被缩小
修饰符不能被放大

------重载和重写的区别:
方法重写要求参数签名必须一致,而重载要求参数签名必须不一致。
方法重写要求返回类型必须一致,而重载对此不做限制。
方法重写只能用于子类重写父类的方法,必须有两个类子类和父类,重载可用于同一个类的所有方法。

 class father
{
 public void move(){
 System.out.println("走");
 }
  }

class child extends father  //child类继承father类
{
 public void move(){//方法重写要求参数签名必须一致,
  System.out.println("跑") //方法重写,返回类型也必须相同,输出不同而已
 }
 public void move(String move) //方法重载,重载要求!参数!签名必须不一致,
 {
 System.out.println(move);//重载对返回类型不做限制。
 }
}

给大家一道题做做哦~
给定java代码如下所示,在A处新增下列( )方法,是对cal方法的重载(选择两项)
public class Test{
public void cal(int x, int y, int z){
}
}
A. public int cal(int x,int y,float z){return 0;}
B. public int cal(int x,int y,int z){return 0;}
C. public void cal(int x,int z){}
D. public viod cal(int z,int y,int x){}//

重载要求参数签名必须不一致 ,哪怕换了位置也不行
所以答案是 AC,这位同学,你做对了吗?

1人推荐
随时随地看视频
慕课网APP