覆写(Override)与重载(Overload)
2016-04-22 14:47
288 查看
覆写(Override):子类中方法与其父类中方法的方法名和参数相同,则该方法被覆写。覆写是父类与子类之间多态性的体现,子类对父类的方法进行重新定义。
Java中,子类可以继承父类的方法而无需重新写形同的方法,但有时子类不想仅仅只是继承父类方法,而还想作些改动,此时便要覆写方法。即子类继承自父类相同方法名、参数,但要做出有别于父类的响应,此时就要在子类中重写该该方法,覆盖掉父类方法,如果还要父类中原有的方法,可使用super关键字,该关键字引用了当前类的父类。这是相同参数,不同实现,属动态多态性。
覆写规则
覆写方法只能存在于具有继承关系中;
只能重写父类非私有的方法;
覆写时子类方法的访问修饰符的权限一定要大于其父类方法的访问修饰符(public>protect>default>private);
覆写方法不能抛出新的检查异常,或者比起父类方法声明更宽泛的检查型异常。如:父类方法中声明了一个检查异常IOException,覆写这个方法时就不能抛出Exception,只能抛出IOExecption或其子类异常,可以抛出非检查型异常。
重载(Overload):类中创建多个具有不同参数、相同方法名的方法。调用时通过传递不同参数个数、参数类型决定具体使用哪个方法。重载是一个类内多态性的一种表现。可以理解为同一方法能根据不同参数列表,做出不同处理,是静态多态性。
重载规则:
必须具有相同方法名、不同参数列表;
可以有不同访问修饰符‘
可以抛出不同异常
Java中,子类可以继承父类的方法而无需重新写形同的方法,但有时子类不想仅仅只是继承父类方法,而还想作些改动,此时便要覆写方法。即子类继承自父类相同方法名、参数,但要做出有别于父类的响应,此时就要在子类中重写该该方法,覆盖掉父类方法,如果还要父类中原有的方法,可使用super关键字,该关键字引用了当前类的父类。这是相同参数,不同实现,属动态多态性。
覆写规则
覆写方法只能存在于具有继承关系中;
只能重写父类非私有的方法;
覆写时子类方法的访问修饰符的权限一定要大于其父类方法的访问修饰符(public>protect>default>private);
覆写方法不能抛出新的检查异常,或者比起父类方法声明更宽泛的检查型异常。如:父类方法中声明了一个检查异常IOException,覆写这个方法时就不能抛出Exception,只能抛出IOExecption或其子类异常,可以抛出非检查型异常。
重载(Overload):类中创建多个具有不同参数、相同方法名的方法。调用时通过传递不同参数个数、参数类型决定具体使用哪个方法。重载是一个类内多态性的一种表现。可以理解为同一方法能根据不同参数列表,做出不同处理,是静态多态性。
重载规则:
必须具有相同方法名、不同参数列表;
可以有不同访问修饰符‘
可以抛出不同异常
相关文章推荐
- BI的架构模型
- dom元素和jQuery元素互相调用方法
- C#中定义调用方法
- 从尾到头打印链表
- 安卓开发获取SDCard中某个目录下图片
- JAVA的输入输出基本操作样例
- c++宏定义命令
- Hadoop学习9--动态增加datanode
- 去除vim ^M符号
- 虚拟机的网络模式
- boost::spirit用法及EBNF表达式基础
- 浅谈撞库防御策略
- transform导致的border-radius失效问题
- linux定时任务crontab
- Android ViewAnimation 使用详解
- C++保存json文件(使用jsoncpp库)
- android基础知识-Vibrator(振动器) 使用
- 淘宝首页性能优化实践
- c#简答(1)
- 利用Memcache解决数据库高并发访问的瓶颈问题