当前位置:  技术问答>java相关

overriding & overloading的问题

    来源: 互联网  发布时间:2015-11-12

    本文导语:  1. overriding 和 overloading 有什么区别?哪些地方该用overriding;哪些地方用 overloading?在java的polymorphism 中怎样有效的去实现它们?     (请举举例子说明,谢谢) 2. 请问以下程序段中的temp()是覆写,还是重载?怎样才算是(...

1. overriding 和 overloading 有什么区别?哪些地方该用overriding;哪些地方用 overloading?在java的polymorphism 中怎样有效的去实现它们?
    (请举举例子说明,谢谢)

2. 请问以下程序段中的temp()是覆写,还是重载?怎样才算是(覆写)重载呢?
    class a {
      public void temp() {
         System.out.println("hello");
    }

    class b extends a {
       public void temp() {
          System.out.println("hello world");
    }

|


overloading重载,就是说在本类里面,有多个同名method(),参数并不相同(包括参数类型和参数的顺序)、返回类型可以相同;也就是本来有一个method(),而现在重载了其它的method();
class a
{
  public void d()
  {
    System.out.println(1111);
  }

  public void d(String s)
  {
    System.out.println(s + 222);
  }
}


overriding覆盖:就是说子类有一个method(子类)与父类中的一个method(父类)同名,返回类型可以不同,这时method(子类)将method(父类)给覆盖了,调用的是method(子类)
class a
{
  public void d()
  {
    System.out.println(1111);
  }
}

class b extends a
{
  public void d()
  {
    System.out.println(222);
  }
}

|
都不准确,也许叫覆写更准确,要理解重载的概念,重载就是函数的名字相同而参数不同并且在同一个对象中。
如果将
    class b extends a {
       public void temp() {
          System.out.println("hello world");
    }
更改成
    class b extends a {
       public void temp(String a) {
          System.out.println("hello world");
    }
也许可以算是重载,因为b类继承了A的public void temp()函数,而b中有一个名字相同但是参数不同的函数。

|
过载:
class a
{
  public void d()
  {
    System.out.println(1111);
  }
}

class b extends a
{
  public void d()
  {
    System.out.println(222);
  }
}

重载:
class a
{
  public void d()
  {
    System.out.println(1111);
  }

  public void d(String s)
  {
    System.out.println(s + 222);
  }
}

不知道理解的对不.

|
overriding 在同一个类中会导致编译器不知道你要调用的是哪个方法,而出现异常。
overloading 在子类中好像不行。

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间javax.lang.model.util接口elements的类成员方法: overrides定义及介绍
  • method overriding 的意思我明白,但在中文里应该翻译成什么为好?
  • uses or overrides a deprected api是什么意思呀
  • jdk Note: testsqlserver.java uses or overrides a deprecated API.
  • android @override 报错解决方案
  • c#(asp.net) new与override的区别
  • 解析abstract与override究竟可不可以同时使用
  • 重写、隐藏基类(new, override)的方法


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3