主要区别:是否继承,是否改变参数列表
概念:在一个类中,函数名称相同但参数不同
方法重载规则:
代码示例:
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); } */ }
方法名相同,方法体不同。
方法的声明:权限修饰符 返回值类型 方法名(形参列表){
//方法体
}
参数列表相同。
修饰符范围可以扩大。private < default < protected < public
抛出异常范围可以缩小。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 | √ | √ | √ | √ |