JAVA 基础知识点复习(七)方法的重载和重写

这系列博文主要是将自己之前学习的一些java基础内容进行归纳与总结。

方法

定义:在类中具有特定功能的一段独立的程序。

组成:访问修饰符 非访问修饰符 返回值 方法名 (形参…){ // 方法体 return 返回值}

public static void printName(String name){
	System.out.println(name);
    return;
}

修饰符 :
访问修饰符(public 、protected、default、private)

非访问修饰符(static、final、abstract、synchronized)

关键字:
void (表明该方法没有返回值)

return (用于结束方法并将结果返回给调用者)

方法的重载

一个类中出现同名的方法,只要它们的参数个数或者对应位的类型不同,就叫做重载,与返回值类型和修饰符无关

例:

    public String getName(Integer val, String val2){
        return val + val2;
    }

    public String getName(String val2, Integer val){
        return val2 + val;
    }

匹配优先级

    public static void main(String[] args) {
        overload(1);
    }
    
    // (1) 精确匹配
    public static void overload(int param){
        System.out.println("第一级匹配");
    }
    // (2) 如果是基本数据类型,通过向上转型匹配
    public static void overload(long param){
        System.out.println("第二级匹配");
    }
    // (3) 通过自动装箱匹配
    public static void overload(Integer param){
        System.out.println("第三级匹配");
    }
    // (4) 通过向上转型并装箱匹配
    public static void overload(Long param){
        System.out.println("第四级匹配");
    }
    // (5) 通过子类向上转型继承线路依次匹配
    public static void overload(Object param){
        System.out.println("第五级匹配");
    }
    // (6) 通过可变参数匹配
    public static void overload(Integer ...param){
        System.out.println("第六级匹配");
    }

方法的重写

当子类中出现和父类一模一样的方法时,子类对象运行的是子类的方法,这种现象称之为重写

子类重写父类的方法必须遵从“两同两小一大”的规则

两同:即方法名,形参列表相同

两小:即子类返回值类型和异常要小于等于父类(这里的比较是指继承关系)

一大:子类的访问修饰符要大于等于父类的访问修饰符(这里的比较是指访问权限)

public class Father {

    protected Number getAge(int i) throws Exception{
        return 50;
    }
}

class Son extends Father{
    @Override
    public Integer getAge(int i) throws RuntimeException {
        return 25;
    }
}

被static、final、private修饰的成员不能被重写

静态方法不具备多态性,如果子类有和父类一样的静态方法,只是把父类的方法隐藏了并不是重写

public static void main(String[] args) {
        Father f = new Son();
        try {
            // 还是执行父类方法,如果是重写根据多态执行的应该是子类的方法
            System.out.println(f.getAge(0)); // 50
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
原创文章 7 获赞 0 访问量 6214

猜你喜欢

转载自blog.csdn.net/weixin_42598683/article/details/105827766