Java学习笔记(9)--- 重写,重载,多态
2019-12-11 16:03:15来源:博客园 阅读 ()
Java学习笔记(9)--- 重写,重载,多态
1.重写:
a.定义:
重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写!
重写的好处在于子类可以根据需要,定义特定于自己的行为。 也就是说子类能够根据需要实现父类的方法。
重写方法不能抛出新的检查异常或者比被重写方法申明更加宽泛的异常。例子:
class Animal{
public void move(){
System.out.println("动物可以移动");
} }
class Dog extends Animal{
public void move(){
System.out.println("狗可以跑和走");
} }
然后我们引用:
Animal a = new Animal(); // Animal 对象
Animal b = new Dog(); // Dog 对象
a.move();// 执行 Animal 类的方法
b.move();//执行 Dog 类的方法
输出为:
动物可以移动
狗可以跑和走
在上面的例子中可以看到,尽管 b 属于 Animal 类型,但是它运行的是 Dog 类的 move方法(我们重写的方法)
这是由于在编译阶段,只是检查参数的引用类型。
然而在运行时,Java 虚拟机(JVM)指定对象的类型并且运行该对象的方法。
因此在上面的例子中,之所以能编译成功,是因为 Animal 类中存在 move 方法,然而运行时,运行的是特定对象的方法。
b.规则:
1.参数列表必须完全与被重写方法的相同。
2.返回类型与被重写方法的返回类型可以不相同,但是必须是父类返回值的派生类。
3.访问权限不能比父类中被重写的方法的访问权限更低。
4.父类的成员方法只能被它的子类重写。如果在同一包里的子类可以重写所有的父类方法,除了声明为 private 和 final 的方法。
5.声明为 final 的方法不能被重写,而static 的方法不能被重写,但是能够被再次声明。
6.子类和父类不在同一个包中,那么子类只能够重写父类的声明为 public 和 protected 的非 final 方法。
7.重写的方法能够抛出任何非强制异常,无论被重写的方法是否抛出异常。但是,重写的方法不能抛出新的强制性异常,或者比被重写方法声明的更广泛的强制性异常,反之则可以。
2.重载:
跟c++差不多的意思。
重载(overloading) 是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。
每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。
最常用的地方就是构造器的重载。
与重写的不同之处就是重载着重于不同的参数。
3.多态:
a.定义:
多态是同一个行为具有多个不同表现形式或形态的能力。多态就是同一个接口,使用不同的实例而执行不同操作。
学好多态这个概念对应用好接口很重要。
多态的存在的三个必要条件:
1.继承
2.重写
3.父类引用指向子类对象
比如说这个例子,是把一个父类的引用指向了一个子类的对象:
Parent p = new Child();
注意:使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法。
b.虚函数:
虚函数是多态的基础之一,当然JAVA所有的函数默认都是C++意义上的虚函数所以不用特别去注意,因为动态绑定是Java的默认行为。
如果 Java 中不希望某个函数具有虚函数特性,可以加上 final 关键字变成非虚函数。
引用:https://www.runoob.com/java/java-polymorphism.html
原文链接:https://www.cnblogs.com/cptCarlvon/p/12020236.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- Java--反射(框架设计的灵魂)案例 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash