黑马程序员技术交流社区

标题: 覆盖和重载区别在哪里? [打印本页]

作者: Taekwon-boy    时间: 2015-4-20 14:19
标题: 覆盖和重载区别在哪里?
请问下覆盖和重载的区别哪里?有时分不清!


作者: 一个好人    时间: 2015-4-20 14:42
重载 OverRide是指 一个类里 几个方法名相同 参数不同 就构成了重载,和返回值无关, 重写是发生在继承关系和实现接口里的时候,必须要把父类同样的方法再写一遍
作者: 肖某    时间: 2015-4-20 15:24
  1. package com.xiaomou;

  2. //Test继承了Person类
  3. public class Test extends Person {

  4.         /**
  5.          * @author xiaomou
  6.          */

  7.         // 重写Person类中的fun(String name, int age)的方法
  8.         void fun(String name, int age) {
  9.                 System.out.println("我是:" + name + ",今年" + age);
  10.         }

  11.         public static void main(String[] args) {
  12.                 // Person p = new Person();
  13.                 // Test test = new Test();
  14.                 // test.fun("小日本鬼子", 18);
  15.                 new Test().fun("小日本鬼子", 18);

  16.         }
  17. }

  18. // 定义一个Person的父类,里面有name,age,sex以及一个方法eat()
  19. class Person {
  20.         String name;
  21.         int age;
  22.         String sex;

  23.         // 下面这三个fun()构成了重载,方法名相同,但里面的参数不一样,就够成了重载
  24.         void fun() {
  25.                 System.out.println("A类中的方法1");
  26.         }

  27.         void fun(String name, int age) {
  28.                 System.out.println("A类中的方法2");
  29.         }

  30.         void fun(String name, int age, String sex) {
  31.                 System.out.println("A类中的方法3");
  32.         }
  33. }
复制代码



作者: 肖某    时间: 2015-4-20 15:25
肖某 发表于 2015-4-20 15:24

那里有个注释没改过来,应该是fun()方法
作者: Taekwon-boy    时间: 2015-4-20 17:10
一个好人 发表于 2015-4-20 14:42
重载 OverRide是指 一个类里 几个方法名相同 参数不同 就构成了重载,和返回值无关, 重写是发生在继承关系 ...

嗯,,了
作者: Taekwon-boy    时间: 2015-4-20 17:11
肖某 发表于 2015-4-20 15:25
那里有个注释没改过来,应该是fun()方法

你的测试里考了重写?
作者: 曾宇    时间: 2015-4-20 17:50
用大白话说
覆盖:原有的东西不要了,重新弄一个。
重载:是原有的东西的双胞胎,同一个妈,同一个名字,但是会的东西不一样。
(我会打铁,首先你要给我铁。我会伐木,首先你要给我木)
作者: 程梦真    时间: 2015-4-20 19:44
覆盖也叫覆写,就是把你原来的方法改一遍
重载,就是保留原来的方法,重新写一个跟原来方法名一样的方法。(参数的 个数,顺序,类型 不能都一样)
作者: itheima_llt    时间: 2015-4-20 20:03
谢谢楼主  。。。。。。
作者: 肖某    时间: 2015-5-4 12:40
Taekwon-boy 发表于 2015-4-20 17:11
你的测试里考了重写?

没有啊!我只是针对你的这个问题  写了一个  自我感觉能好懂的例子
作者: szw727    时间: 2015-5-4 14:31
覆盖是建立在继承基础上的,子类继承了一个父类的方法,并提供一个和父类 同名 同参数 同返回值的方法,就是覆盖,访问限定符子类的要大于等于父类的。

重载是在同一个可见区域中 有两个同名的函数, 但是参数列表不同 就会构成重载,方法的调用是有你传递的参数来决定的
作者: laine    时间: 2015-5-4 14:36
重载是一个类里 几个方法名相同 参数不同
作者: jinlong0999    时间: 2015-5-4 15:22
覆盖:继承或者实现了某个接口后把父类的方法按照自己的需求重新写了
重载:一个函数(方法)传递的参数个数不同或者参数类型不同,从而写了多个同名的函数,但是传递的参数不同,就是重载
作者: 唐泉银    时间: 2015-5-4 17:01
覆盖要方法和参数完全相同,重载要方法相同,参数不同




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2