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

Shams ·
更新时间:2024-11-13
· 968 次阅读

大纲方法方法的重载方法的重写

这系列博文主要是将自己之前学习的一些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访问量 6517 关注 私信 展开阅读全文
作者:拧螺丝的工具人



JAVA 重载 重写 方法

需要 登录 后方可回复, 如果你还没有账号请 注册新账号
相关文章