方法的重载
重载(overload):在同一个类中,声明多个同名方法,通过参数列表来区分不同的方法(参数列表的数量,类型、顺序)
示例代码:
public class Demo { private String name; private int age; public static void main(String[] args) { Demo demo=new Demo(); demo.test1(); demo.test1("张三"); demo.test1("王五", 19); demo.test1(18, "李四"); } //方法的重载 public void test1() { } //方法的重载 public String test1(String name) { return name; } //方法的重载 public void test1(String name,int age) { this.name=name; this.age=age; } //方法的重载 public void test1(int age,String name) { this.age=age; this.name=name; } }
总结:
1.重载必须有不同的参数列表
2.重载对于返回类型没有要求
3.重载对于修饰符访问权限没有要求
方法的重写
重写(override):前提是发生在具有继承关系的两个类之间(子类可以继承父类非私有的方法),当父类方法不能满足子类需求时,子类可以对继承的方法进行重新编写
重写规则:
参数列表必须保持一致;
返回值类型必须保持一致;
方法名必须保持一致;
重写的方法的访问权限范围必须大于等于父类方法;
重写方法抛出的异常范围不能大于父类方法;
示例代码:
class ParentClass { // x成员变量 int x; protected void setValue() { x = 10; } } class SubClass extends ParentClass { // 屏蔽父类x成员变量 int x; @Override public void setValue() { // 覆盖父类方法 // 访问子类对象x成员变量 x = 20; // 调用父类setValue()方法 super.setValue(); } public void print() { // 访问子类对象x成员变量 System.out.println("x = " + x); // 访问父类x成员变量 System.out.println("super.x = " + super.x); } }
调用代码如下:
public class HelloWorld { public static void main(String[] args) { //实例化子类SubClass SubClass pObj = new SubClass(); //调用setValue方法 pObj.setValue(); //调用子类print方法 pObj.print(); } }
运行结果如下:
x = 20 super.x = 10