重载和重写以及重写的权限问题

简单说重载是发生在一个类中

重写是发生在子父类中的继承情况中

 

重载Overloading

方法重载是让类以统一的方式处理不同类型数据的一种手段。具有同名函数同时存在,具有不同参数类型/个数。重载overloading是一个类中多态兴的一种表现。

java的方法重载,就是在类中可以创建多个方法,他们具有相同的名字,但具有不同的参数和不同的定义。调用方法时通过传递给他们的不同参数个数和参数类型来决定具体使用哪个方法,这就是多态性

重载的时候,方法名要一样,但是参数类型和个数不一样返回值可以相同也可以不相同无法以返回值作为重载函数的区分标准

 下面是重载的例子:    

package c04.answer;//这是包名    

//这是这个程序的第一种编程方法,在main方法中先创建一个Dog类实例,然后在Dog类的构造方法中利用this关键字调用不同的bark方法。

不同的重载方法bark是根据其参数类型的不同而区分的。

   

//注意:除构造器以外,编译器禁止在其他任何地方中调用构造器。    

package c04.answer;

public class Dog {  

        Dog()         

    {               

        this.bark();        

     }         

    void bark()//bark()方法是重载方法         

    {                

       System.out.println(\"no barking!\");                

       this.bark(\"female\", 3.4);         

    }         

    void bark(String m,double l)//注意:重载的方法的返回值都是一样的,        

     {                

       System.out.println(\"a barking dog!\");           

          this.bark(5, \"China\");     

       }         

    void bark(int a,String n)//不能以返回值区分重载方法,而只能以“参数类型”和“类名”来区分        

     {               

        System.out.println(\"a howling dog\");       

      }

        public static void main(String[] args)    

       {                

       Dog dog = new Dog();                

      //dog.bark(); [Page]              

        //dog.bark(\"male\", \"yellow\");           

         //dog.bark(5, \"China\");

 

重载的规则:

 

1、必须具有不同的参数列表;

 

2、可以有不责骂的返回类型,只要参数列表不同就可以了;

 

3、可以有不同的访问修饰符;

 

4、可以抛出不同的异常;

 

 

 

重写:

1) 父类与子类之间的多态性,对父类的函数进行重新定义。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)Java中,子类可继承父类中的方法,而不需要重新编写相同的方法。但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。方法重写又称方法覆盖

2) 若子类中的方法与父类中的某一方法具有相同的方法名返回类型参数表则新方法将覆盖原有的方法。如需父类中原有的方法,可使用super关键字,该关键字引用了当前类的父类。

3) 子类函数的访问修饰权限不能少于父类的;因为:Liskov替换原则,子类对象可以被当成父类对象使用。如果可以降低子类的访问权限,那就违反了这一原则了。如父类为public而子类为

private就不行了。

 

 

重写方法的规则

 

1、参数列表必须完全与被重写的方法相同,否则不能称其为重写而是重载。

 

2、返回的类型必须一直与被重写的方法的返回类型相同,否则不能称其为重写而是重载。

 

3、访问修饰符的限制一定要大于被重写方法的访问修饰符(public>protected>default>private)

 

4、重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查型异常。

 

父类的一个方法申明了一个检查异常IOException,在重写这个方法是就不能抛出Exception,只能抛出IOException的子类异常,可以抛出非检查异常

 

转载于:https://www.cnblogs.com/yanmingup/p/3225470.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/360532.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《图解HTTP》第1章 了解Web及网络基础

《图解HTTP》第1章 了解Web及网络基础 1. 使用 HTTP 协议访问 Web1.1 网络基础 TCP/IP1.2 TCP/IP 协议族1.2.1 TCP/IP 的分层管理 1. 使用 HTTP 协议访问 Web Web 使用一种名为 HTTP(HyperText Transfer Protocol,超文本传输协议) 的协议作为…

JBoss Forge NetBeans集成–入门

JBoss Forge是构建基于Maven的Java EE项目的最快方法。 因此,它已经具有了令人敬畏的功能,使您作为开发人员的生活更加轻松。 在大多数情况下,使用Forge的人们可能会对创建Web应用程序感兴趣。 有很多入门Forge基础的方法。 您可以查看quick…

java版本的getorcreate,getOrCreate for java-rest-api neo4j失敗

我有一個簡單的關係測試,我試圖運行使用Rest API創建一個獨特的節點(java-rest-binding)https://github.com/neo4j/java-rest-binding但不幸的是我被困在某些東西上,這裏是細節:(非唯一的節點和關係工作完全正常,與這一點&#xf…

Nifty JUnit:在方法和类级别上使用规则

如Nifty JUnit:使用临时文件一文中所示 ,可以在JUnit测试中使用Rule ,这是方法级别的规则。 在此示例中,我想显示ClassRule用于类级别规则的变体。 方法规则 Rule在测试类的每个测试方法(就像Before )之前…

SQL语法的重要知识点总结

好几年没写SQL语句了。现在到了新的team,需要用到数据库。作为QA的话时常需要使用客户端工具连接到数据库中找寻或修改数据。这么长时间没使用,一些SQL的使用技巧都忘得差不多了。晚上看了一些资料,花了1个多小时又捡起了曾经的知识。现在总结…

java语法定制混淆,由撇号混淆的textpad语法高亮显示

我想知道在textpad的语法文件中放置什么来修复问题,例如,在html文件中,你正在写一个段落,而撇号会创建语法高亮,直到下一个aspostrophe .例如:Hi, I m an example.lol text here placeholder lorem ipsum I…

您需要了解的有关默认方法的所有信息

因此,默认方法是……昨天的新闻,对不对? 是的,但是使用一年后,积累了很多事实,我想将这些事实收集在一个地方,供刚开始使用它们的开发人员使用。 甚至有经验的人都可以找到他们不知道的一两个细…

RAC+ASM在单机上恢复的过程

IT168技术文档】网上也有类似的例子,但不尽详细,也没多花心思解释流程及原因,可能对初试者不太解惑。有感于此,故认真整理了恢复步骤即操作流程,望有助于同行朋友。 环境:正式环境是IBM4IBM5(RAC)&#xf…

php event_base_new,php event拓展基本使用

php event拓展基本使用2019-02-04 22:02:28(527)1. 确定io复用类型(select/poll/epoll)php$cfg new EventConfig();$cfg->avoidMethod("select");$cfg->avoidMethod("epoll");$base new EventBase($cfg);$sig Event::signal($base, SIGTERM, func…

OSGi服务测试助手:ServiceRegistrationRule

OSGi服务测试可以有效避免与悬挂的服务引用有关的问题。 就像我在写简单服务贡献验证中所承诺的那样,这次我引入了一个JUnit规则 ,该规则有助于测试组件之间的交互。 OSGi服务测试组件交互 假设我们有一个服务,该服务通知根据whiteboard-pat…

php 在函数里打开链接,JavaScript中打开链接的几种方法介绍

如何使用JavaScript打开链接?本篇文章我们就来看看使用JavaScript打开链接的几种方法介绍。我们先来看一段代码使用Javascript实现打开链接,需要在location.href中替换要打开的链接的URL。location.href http://www.php.cn/blog.html;通过上述代码我们可…

三代基因组测序技术原理简介

考虑到cnblog不适合基因组领域这种类型的文章, 最终,我自己开通了公众号:碱基矿工,欢迎感兴趣的同学关注! 也可以关注我的知乎:https://www.zhihu.com/people/yellowtree/activities 2018年1月修改&#x…

Java并发教程–锁定:显式锁定

1.简介 在许多情况下,使用隐式锁定就足够了。 有时,我们将需要更复杂的功能。 在这种情况下, java.util.concurrent.locks包为我们提供了锁定对象。 当涉及到内存同步时,这些锁的内部机制与隐式锁相同。 区别在于显式锁提供了其他…

POJ 1422 Air Raid (最小路径覆盖)

题意 给定一个有向图&#xff0c;在这个图上的某些点上放伞兵&#xff0c;可以使伞兵可以走到图上所有的点。且每个点只被一个伞兵走一次。问至少放多少伞兵。 思路 裸的最小路径覆盖。 最小路径覆盖 【路径覆盖】在一个有向图G(V, E<u,v>)中&#xff0c;路径覆盖就是在图…

自编码网络粒子群matlab,粒子群算法优化BP

这是数据1999 1611 1746 1277 753 323 229 7.10561325 1064 1414 1026 430 191 153 24.54521125 839 1197 857 301 168 139 …

在非托管对象中使用Spring托管Bean

即使我们想使用现有的最佳和最新技术&#xff0c;我们也必须处理遗留代码。 想象一下&#xff0c;新代码是用Spring框架的最新技术编写的&#xff0c;而旧代码根本不是用Spring编写的。 然后在非托管Spring对象中使用Spring托管Bean是我们必须处理的模式之一。 遗留代码具有非托…

lda php,主题模型︱几款新主题模型——SentenceLDA、CopulaLDA、TWE简析与实现

[导读]百度最近开源了一个新的关于主题模型的项目。文档主题推断工具、语义匹配计算工具以及基于工业级语料训练的三种主题模型&#xff1a;LatentDirichlet Allocation(LDA)、SentenceLDA 和Topical Word Embedding(TWE)。一、Familia简介帮Familia&#xff0c;打个小广告~ F…

Spring项目中的Netflix Archaius属性

Archaius基础 Netflix Archaius是用于管理应用程序配置的库。 考虑一个属性文件“ sample.properties”&#xff0c;其中包含一个名为“ myprop”的属性&#xff1a; mypropmyprop_value_default这是使用Archaius加载文件的方式&#xff1a; ConfigurationManager.loadCascad…

linux进程之间传递句柄

参考网上的实现&#xff0c;进行了一点改进&#xff0c;本来想用FIFO实现的&#xff0c;后来发现不行&#xff0c;必须使用系统的sendmsg函数&#xff0c;代码格式有点乱&#xff0c;不过功能可以实现&#xff0c;改天有空整理一下~~ 讲究看哈~ #include <sys/types.h>#i…

php 中间代码,PHP内核中用户函数、内部函数和中间代码的转换

昨天和一朋友在邮件中讨论这样一个问题&#xff1a;zend_internal_function&#xff0c;zend_function&#xff0c;zend_op_array这三种结构是可以相互转化的&#xff0c;这三者的转化是如何进行的呢&#xff1f; 以此文&#xff0c;总结。在函数调用的执行代码中我们会看到这样…