Java方法重载与方法重写的区别

简介: 笔记

方法的重载


重载(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



相关文章
|
7天前
|
存储 缓存 安全
java 中操作字符串都有哪些类,它们之间有什么区别
Java中操作字符串的类主要有String、StringBuilder和StringBuffer。String是不可变的,每次操作都会生成新对象;StringBuilder和StringBuffer都是可变的,但StringBuilder是非线程安全的,而StringBuffer是线程安全的,因此性能略低。
|
3天前
|
Java 数据处理 数据安全/隐私保护
Java处理数据接口方法
Java处理数据接口方法
11 1
|
21天前
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
71 4
|
2月前
|
Java API
Java 对象释放与 finalize 方法
关于 Java 对象释放的疑惑解答,以及 finalize 方法的相关知识。
48 17
|
25天前
|
Java 测试技术 Maven
Java一分钟之-PowerMock:静态方法与私有方法测试
通过本文的详细介绍,您可以使用PowerMock轻松地测试Java代码中的静态方法和私有方法。PowerMock通过扩展Mockito,提供了强大的功能,帮助开发者在复杂的测试场景中保持高效和准确的单元测试。希望本文对您的Java单元测试有所帮助。
65 2
|
24天前
|
Java
Java代码解释++i和i++的五个主要区别
本文介绍了前缀递增(++i)和后缀递增(i++)的区别。两者在独立语句中无差异,但在赋值表达式中,i++ 返回原值,++i 返回新值;在复杂表达式中计算顺序不同;在循环中虽结果相同但使用方式有别。最后通过 `Counter` 类模拟了两者的内部实现原理。
Java代码解释++i和i++的五个主要区别
|
2月前
|
Java 开发者
在Java多线程编程中,创建线程的方法有两种:继承Thread类和实现Runnable接口
【10月更文挑战第20天】在Java多线程编程中,创建线程的方法有两种:继承Thread类和实现Runnable接口。本文揭示了这两种方式的微妙差异和潜在陷阱,帮助你更好地理解和选择适合项目需求的线程创建方式。
20 3
|
2月前
|
Java 大数据 API
别死脑筋,赶紧学起来!Java之Steam() API 常用方法使用,让开发简单起来!
分享Java Stream API的常用方法,让开发更简单。涵盖filter、map、sorted等操作,提高代码效率与可读性。关注公众号,了解更多技术内容。
|
2月前
|
Java
通过Java代码解释成员变量(实例变量)和局部变量的区别
本文通过一个Java示例,详细解释了成员变量(实例变量)和局部变量的区别。成员变量属于类的一部分,每个对象有独立的副本;局部变量则在方法或代码块内部声明,作用范围仅限于此。示例代码展示了如何在类中声明和使用这两种变量。
|
2月前
|
Java 开发者
在Java多线程编程中,选择合适的线程创建方法至关重要
【10月更文挑战第20天】在Java多线程编程中,选择合适的线程创建方法至关重要。本文通过案例分析,探讨了继承Thread类和实现Runnable接口两种方法的优缺点及适用场景,帮助开发者做出明智的选择。
19 2