A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Taekwon-boy 中级黑马   /  2015-4-20 14:19  /  907 人查看  /  13 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

请问下覆盖和重载的区别哪里?有时分不清!

13 个回复

倒序浏览
重载 OverRide是指 一个类里 几个方法名相同 参数不同 就构成了重载,和返回值无关, 重写是发生在继承关系和实现接口里的时候,必须要把父类同样的方法再写一遍
回复 使用道具 举报
  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. }
复制代码


回复 使用道具 举报

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

嗯,,了
回复 使用道具 举报
肖某 发表于 2015-4-20 15:25
那里有个注释没改过来,应该是fun()方法

你的测试里考了重写?
回复 使用道具 举报
曾宇 中级黑马 2015-4-20 17:50:35
7#
用大白话说
覆盖:原有的东西不要了,重新弄一个。
重载:是原有的东西的双胞胎,同一个妈,同一个名字,但是会的东西不一样。
(我会打铁,首先你要给我铁。我会伐木,首先你要给我木)

评分

参与人数 1技术分 +1 收起 理由
lwj123 + 1

查看全部评分

回复 使用道具 举报 1 0
覆盖也叫覆写,就是把你原来的方法改一遍
重载,就是保留原来的方法,重新写一个跟原来方法名一样的方法。(参数的 个数,顺序,类型 不能都一样)
回复 使用道具 举报
谢谢楼主  。。。。。。
回复 使用道具 举报
Taekwon-boy 发表于 2015-4-20 17:11
你的测试里考了重写?

没有啊!我只是针对你的这个问题  写了一个  自我感觉能好懂的例子
回复 使用道具 举报
覆盖是建立在继承基础上的,子类继承了一个父类的方法,并提供一个和父类 同名 同参数 同返回值的方法,就是覆盖,访问限定符子类的要大于等于父类的。

重载是在同一个可见区域中 有两个同名的函数, 但是参数列表不同 就会构成重载,方法的调用是有你传递的参数来决定的
回复 使用道具 举报
重载是一个类里 几个方法名相同 参数不同
回复 使用道具 举报
覆盖:继承或者实现了某个接口后把父类的方法按照自己的需求重新写了
重载:一个函数(方法)传递的参数个数不同或者参数类型不同,从而写了多个同名的函数,但是传递的参数不同,就是重载
回复 使用道具 举报
覆盖要方法和参数完全相同,重载要方法相同,参数不同
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马