Java教程

java的重写和重载

本文主要是介绍java的重写和重载,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

java的重写和重载

主要区别:是否继承,是否改变参数列表

方法的重载(overload)

概念:在一个类中,函数名称相同但参数不同
方法重载规则:

  1. 方法名必须相同
  2. 方法的参数必须不同(参数个数、类型)
  3. 返回类型可以相同也可以不同
  4. 只有返回值类型相同不构成重载

代码示例:

package com.base;

/**
 * @Author:lkb
 * @Date: 2021/10/18 12:42
 */
public class Overload {
    public static void main(String[] args) {

    }
    //要进行重载的方法
    public int printSum(int a,int b){
        return a+b;
    }
    //重载1:参数个数不一样
    public int pirntSum(int a,int b,int c){
        return a+b+c;
    }
    //重载2:参数类型不一样,返回值类型也不一样
    public double printSum(double a,double b){
        return a+b;
    }
    //错误重载:只有返回值类型不一样,不构成重载
    /*
    public double printSum(int a, int b){
        return a+b;
    }
    */
    //错误重载:只改变变量名和返回值类型
    /*
    public void printSum(int b,int a){
        System.out.println(a+b);
    }
    */
    
}

方法重写(override都是方法的重写,和属性无关)

  • 需要有继承关系,子类重写父类
    1. 方法名相同,方法体不同。

      方法的声明:权限修饰符 返回值类型 方法名(形参列表){
      //方法体
      }

    2. 参数列表相同。

    3. 修饰符范围可以扩大。private < default < protected < public

    4. 抛出异常范围可以缩小。Exception(大) --> ClassNotFoundException
      特殊情况: 子类不能重写父类中声明为private权限的方法;

public class B {
    public void test(){
        System.out.println("B==>test()");
    }
}
==========================================================
public class A extends B {
    @Override
    public void test() {
        System.out.println("A==>test()");
    }
}
==========================================================
public class Application {
    public static void main(String[] args) {
        
        A a = new A();
        B b = new A();
        a.test();//A==>test()
        b.test();//A==>test()
    }
}

注意:子类与父类中同名同参数的方法必须同时声明为非static的(即为重写),或者同时声明为static的(不是重写)。

Java中,static方法是属于类的方法不是属于某个实例的方法,像static变量一样是类所共有的,在权限允许的范围内可以直接通过“类名.方法名(static方法名)”调用。
Java中的static方法是不能被子类重写的或者被子类覆盖的,因为即使被覆盖也不会实现多态的功能,所以static方法不是能不能重写,而是不根本无法实现static方法重写。

关于static方法的介绍链接:
原文链接:https://blog.csdn.net/chenming_1799701236/article/details/82428306

关于权限修饰符

1、public:public表明该数据成员、成员函数是对所有用户开放的,所有用户都可以直接进行调用。
2、private:private表示私有,私有的意思就是除了class自己之外,任何人都不可以直接使用。父类中声明为 private 的属性或方法,子类继承父类以后,仍然认为获取了父类中私有的结构。 * 只有因为封装性的影响,使得子类不能直接调用父类的结构而已。
3、protected:protected对于子女、朋友来说,就是public的,可以自由使用,没有任何限制,而对于其他的外部class,protected就变成private。

4.缺省default

修饰符类内部同一个包不同包子类同一个工程
private
default
protected
public
这篇关于java的重写和重载的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!