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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 那窗_那世 中级黑马   /  2014-5-30 08:00  /  1244 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

覆盖与重用的区别是什么?哪位大神能举例说明

8 个回复

倒序浏览
覆盖就是重用吧,打酱油
回复 使用道具 举报
覆盖是子类创建新的方法覆盖父类实现不同功能,重载是一个类中相同的方法通过参数不同实现不同功能。
回复 使用道具 举报
覆盖一般情况下是字符类之间,子类函数对父类函数的覆盖,覆盖就是函数名相同函数的参数也相同,但函数体不同,即子类的实现功能与父类的实现功能不同,重载一般大多数情况下是在一个类中的许多函数重载,重载就是函数的参数类型或者参数个数不同,不需要比较函数返回值类型。这也是重载和覆盖的区别。
回复 使用道具 举报
楼上都说的很明白了  我就给你举个例子吧
覆盖:
class A{
  methodA(){功能1}
}
class B extends A{
methodA(){功能2}//子类和父类中函数名相同 功能不相同 不同类实例调用同一个方法时 就是多态
}

重载:class C{
method(){}  //没有参数
method(参数1){}//一个参数
method(参数1,参数2){}//二个参数
}
回复 使用道具 举报
你要问的是方法的重写(覆写)和方法的重载吗?
    重写是建立在继承的基础上的概念,指的是子类对父类的方法的实现很不满意,即父类方法实现得不够完整,或者该方法不能满足子类的需求,于是子类只好重写父类的这个方法以满足自身的需求。
     而方法的重载是指:一个类中,方法名相同但参数列表不同(参数个数不同,参数类型不同。注意:与返回值无关)的方法。之所以要有方法的重载,是要根据实际需求来决定的。比如System.out.print(),如果你去看API文档(PrintStream类中)就会发现它有很多重载的方法。有打印boolean的,打印String的,打印int的等等。正因为有重载的存在,才使得方法变得灵活,极大的方便了我们使用方法。
回复 使用道具 举报
重载(类内部多态):在一个类内部有多个方法,方法名相同,参数列表不同,叫做重载。(例如:String.valueOf)
覆写(继承中多态):在父类和子类中,如果两个方法的方法签名相同,将执行子类的方法,叫做覆写。(例子:Object.toString)
覆写注意:子类的可见性>=父类的可见性。子类抛出的异常<=父类抛出的异常。
回复 使用道具 举报
lin' 初级黑马 2014-5-30 13:34:01
8#
覆盖就是子类重写父类的方法,重用就比如说你和一个妹子生个孩子跟你和另一个妹子生个孩子,两个孩子不一样
回复 使用道具 举报
方法覆盖(方法重写)
1. 方法的参数签名和返回值类型必须相同,访问控制修饰符可以不同,但是子类方法不能缩小父类方法的访问权限。
2. 子类方法抛出的异常必须和父类方法抛出的异常相同,或者是父类方法抛出的异常类的子类。
3. 父类的静态方法是不能被子类覆盖为非静态方法。
父类的非静态方法不能被子类覆盖为静态方法。
4. 子类可以定义与父类的静态方法同名的静态方法,以便在子类中隐藏父类的静态方法。区别:运行时,JVM把静态方法和所属的类绑定,而把实例方法和所属的实例绑定。
5. 父类的私有方法不能被覆盖
6. 父类的非抽象方法可以被覆盖为抽象方法
方法重载
1. 在一个类中不允许两个方法名相同,并且参数签名也完全相同的方法。
2. 类的同一种功能,可能有多种实现,到底采用哪种实现方式,取决于调用者给定的参数。
3. 对于类的方法(包括从父类中继承的方法),如果有两个方法的方法名相同,但参数不一致,那么可以说,一个方法是另一个方法的重载方法。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马