java方法的重载和覆盖

一、覆盖

1.什么是方法覆盖子类中有一个方法和父类的方法一模一样,那么这就是覆盖

class Stu{//学生类

 private String name;

 private int age;

 public void eat(){

  System.out.println("我的饭量是多少?");

 }

 

}

class Pupil extends Stu{//小学生

 public void eat(){

  System.out.println("我能吃一碗饭");

 }

}

比如以上的代码中Stu这个类总有一个叫做eat的类而在Pupil中也有一个。那么在调用Pupil中的eat方法时那么打印出“我能吃一碗饭”。如果Pupil没有覆盖eat那么打印出来的是“我的放量是多少”

2.注意事项

2.1子类方法中的,函数名,返回值,参数要和父类的一样

2.2 子类方法不能缩小父类方法的访问权限

 

二、重载

为什么需要重载(使代码更简洁)

class jisuan{

 

 public int add(int a ,int b){//两个整数相加

 return a+b;

}

 public int add2(float a,float b){//两个浮点数相加

  return (int)(a+b);

 }

}

如果没有重载的话

public class test {
 public static void main(String [] args){
  jisuan j = new jisuan();
  j.add(1, 2);
  j.add2(1.1f, 1.2f);
 }
}

有了重载我们类可以这样定义

class jisuan{

 

 public int add(int a ,int b){//两个整数相加

 return a+b;

}

 public int add(float a,float b){//两个浮点数相加

  return (int)(a+b);

 }

}

用的时候

public class test {
 public static void main(String [] args){
  jisuan j = new jisuan();
  j.add(1, 2);
  j.add(1.1f, 1.2f);
 }
}

注意事项:那么什么样的才算重载呢。

  1. 方法名称一定是一样的。

  2. 函数的参数类型,个数,顺序。至少有一个不一样。

  3. 方法的修饰符可以不一样

  4. 方法的返回值可以不一样

  5. 如果只是返回参数不一样那么不是重载(会报错)

 

你可能感兴趣的:(覆盖,重载,java方法)