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



相关文章
|
6天前
|
Java
Java如何标记异步方法
【8月更文挑战第13天】Java如何标记异步方法
14 1
|
5天前
|
Java
【Java】Math、System、RunTime、BigDecimal类常用方法
【Java】Math、System、RunTime、BigDecimal类常用方法
|
1天前
|
存储 Java
|
6天前
|
存储 安全 Java
一天十道Java面试题----第二天(HashMap和hashTable的区别--------》sleep、wait、join)
这篇文章是关于Java面试的第二天笔记,涵盖了HashMap与HashTable的区别、ConcurrentHashMap的实现原理、IOC容器的实现方法、字节码的概念和作用、Java类加载器的类型、双亲委派模型、Java异常体系、GC如何判断对象可回收、线程的生命周期及状态,以及sleep、wait、join、yield的区别等十道面试题。
一天十道Java面试题----第二天(HashMap和hashTable的区别--------》sleep、wait、join)
|
6天前
|
存储 关系型数据库 MySQL
一天五道Java面试题----第八天(怎么处理慢查询--------->简述Myisam和innodb的区别)
这篇文章是关于Java面试中关于数据库性能优化和MySQL特性的五个问题,包括处理慢查询、ACID特性保证、MVCC概念、MySQL主从同步原理以及MyISAM和InnoDB存储引擎的区别。
|
7天前
|
Java
Java aop 如何获取方法的参数体
【8月更文挑战第12天】Java aop 如何获取方法的参数体
31 2
|
11天前
|
存储 算法 Oracle
19 Java8概述(Java8概述+lambda表达式+函数式接口+方法引用+Stream+新时间API)
19 Java8概述(Java8概述+lambda表达式+函数式接口+方法引用+Stream+新时间API)
39 8
|
6天前
|
前端开发 Java 编译器
【前端学java】java中的Object类和前端中的Object有什么区别(9)
【8月更文挑战第10天】java中的Object类和前端中的Object有什么区别
13 0
【前端学java】java中的Object类和前端中的Object有什么区别(9)
|
11天前
|
Java
JAVA中public class和class的区别
JAVA中public class和class的区别
26 7