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



相关文章
|
2月前
|
消息中间件 Java Kafka
在Java中实现分布式事务的常用框架和方法
总之,选择合适的分布式事务框架和方法需要综合考虑业务需求、性能、复杂度等因素。不同的框架和方法都有其特点和适用场景,需要根据具体情况进行评估和选择。同时,随着技术的不断发展,分布式事务的解决方案也在不断更新和完善,以更好地满足业务的需求。你还可以进一步深入研究和了解这些框架和方法,以便在实际应用中更好地实现分布式事务管理。
|
2月前
|
Java
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
84 9
|
2月前
|
Java 程序员
Java社招面试题:& 和 && 的区别,HR的套路险些让我翻车!
小米,29岁程序员,分享了一次面试经历,详细解析了Java中&和&&的区别及应用场景,展示了扎实的基础知识和良好的应变能力,最终成功获得Offer。
87 14
|
1月前
|
Java
java中面向过程和面向对象区别?
java中面向过程和面向对象区别?
25 1
|
2月前
|
存储 缓存 安全
java 中操作字符串都有哪些类,它们之间有什么区别
Java中操作字符串的类主要有String、StringBuilder和StringBuffer。String是不可变的,每次操作都会生成新对象;StringBuilder和StringBuffer都是可变的,但StringBuilder是非线程安全的,而StringBuffer是线程安全的,因此性能略低。
66 8
|
2月前
|
安全 Java 开发者
Java中WAIT和NOTIFY方法必须在同步块中调用的原因
在Java多线程编程中,`wait()`和`notify()`方法是实现线程间协作的关键。这两个方法必须在同步块或同步方法中调用,这一要求背后有着深刻的原因。本文将深入探讨为什么`wait()`和`notify()`方法必须在同步块中调用,以及这一机制如何确保线程安全和避免死锁。
47 4
|
2月前
|
Java
深入探讨Java中的中断机制:INTERRUPTED和ISINTERRUPTED方法详解
在Java多线程编程中,中断机制是协调线程行为的重要手段。了解和正确使用中断机制对于编写高效、可靠的并发程序至关重要。本文将深入探讨Java中的`Thread.interrupted()`和`Thread.isInterrupted()`方法的区别及其应用场景。
67 4
|
2月前
|
Java 数据处理 数据安全/隐私保护
Java处理数据接口方法
Java处理数据接口方法
28 1
|
3月前
|
Java API
Java 对象释放与 finalize 方法
关于 Java 对象释放的疑惑解答,以及 finalize 方法的相关知识。
62 17
|
2月前
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
140 4