编程语言
首页 > 编程语言> > Java基础巩固(一)

Java基础巩固(一)

作者:互联网

一. 重载、重写的区别

1. 重载

​ 在同一作用域下,有一组具有相同函数名,不同参数表的函数,这组函数被称为重载函数

注意:

  1. 函数名字相同
  2. 参数列表不同
    • 参数个数不同
    • 参数个数相同,但是其中有不同的参数类型
  3. 返回类型不作为判断条件,即返回类型不同无法构成重载

例子:

public class Test{
    public static void main(String[] args){
        reload(1);
        reload(1, 2);
        reload(1, "str");
    }
    public static void reload(int a){
        System.out.println(a);
    }
    public static void reload(int a, int b){	//函数名相同,参数个数不同
        System.out.println(a);
        System.out.println(b);
    }
    public static void reload(int a, String b){		//函数名相同,参数个数相同,但是其中一个参数类型不同
        System.out.println(a);
        System.out.println(b);
    }
}

以上三个reload均为重载,但下面这个例子则不是重载

public static int reload(int a){
    System.out.println(a);
}

尽管返回类型由void改为int,但参数个数、参数类型都与第一个一致,因此会报错


2. 重写

​ 指两个方法的返回值、方法名、参数的类型和个数相同,方法体不同(子类重写父类的方法)

重写的目的

​ 子类不一定需要父类的功能,或者父类的功能不能满足子类

注意:

  1. 需要有继承关系

  2. 方法名必须相同

  3. 参数列表必须相同

  4. 修饰符:范围可以扩大但不能缩小(即父类的修饰符是Default,则子类的修饰符可以是Public、Protected、Default)

    Public > Protected > Default > Private

  5. 声明为final的方法不能被重写

  6. 声明为Private的方法不能被重写

  7. 声明为static的方法不能被重写,但能被再次声明

  8. 如果子类和父类在同一个包内,那么子类可以重写父类的所有方法

  9. 如果子类和父类不在同一个包内,那么子类只能重写父类中声明为Public、Protected的方法

  10. 构造方法也不能重写


例子:

public class Test{
    public static void main(String[] args){
        A a = new A();
        a.test();					//输出A
        B b = new B();
        b.test();					//输出B
    }
}
public class A{
    public void test(){
        System.out.println("A");
    }
}
public class B extends A{
    @Override						//这个注释可写可不写,写了方便标注方法重写
    public void test(){
        System.out.println("B");
    }
}

在上面这个例子中,A的方法如果被声明为Protected,则B重写的方法只能被Protected或Public声明,同时,如果A的方法声明为Private,则无法被B重写,Private为私有,无法重写


二. 重载和重写的联系

​ 重写和重载是java中的两种多态,重写是父类和子类之间的一种多态的表现,而重载是一个类的多态表现。

​ 重载能改变返回值类型。

标签:巩固,Java,子类,void,基础,重载,父类,重写,public
来源: https://www.cnblogs.com/leezStudy/p/16363718.html