java中重载属于静态分派,重写属于动态分派。Java 中的方法重载发生在同一个类里面两个或者是多个方法的方法名相同但是参数不 同的情况。与此相对,方法覆盖是说子类重新定义了父类的方法。方法覆盖必须有相同的方 法名,参数列表和返回类型。覆盖者可能不会限制它所覆盖的方法的访问。
重写(override)又名覆盖: 1.不能存在同一个类中,在继承或实现关系的类中; 2. 名相同,参数列表相同,方法返回值相同, 3.子类方法的访问修饰符要大于父类的。 4.子类的检查异常类型要小于父类的检查异常。
重载(overload) 1.可以在一个类中也可以在继承关系的类中; 2.名相同; 3.参数列表不同(个数,顺序,类型) 和方法的返回值类型无关。
三.Java 中是否可以覆盖(override)一个 private 或者是static 的方法?
Java 中 static 方法不能被覆盖,因为方法覆盖是基于运行时动态绑定的,而 static 方法 是编译时静态绑定的。static 方法跟类的任何实例都不相关,所以概念上不适用。 java 中也不可以覆盖 private 的方法,因为 private 修饰的变量和方法只能在当前类中使用, 如果是其他的类继承当前类是不能访问到 private 变量或方法的,当然也不能覆盖。