2.2方法的重写(覆盖)(override,orverwrite)

2.2.1 什么时候方法要进行重写?

如果父类中的方法已经无法满足当前子类的业务需求,需要将父类中的方法进行重新写一遍。就是要改变父类的行为。

注意:子类如果重写父类中的方法之后,子类对象一定调用的是重写之后的方法。

2.2.2 发生方法覆盖的条件

①发生在具有继承关系的两个类之间

②必须具有相同的方法名,相同的返回值类型,相同的参数列表.

③重写的方法不能比被重写的方法拥有更低的访问权限。

④重写的方法不能比被重写的方法抛出更宽泛的异常。(异常机制再讲。)

⑤私有的方法不能被覆盖。(多态之后讲)

⑥构造方法无法被覆盖。因为构造方法无法被继承。

⑦静态的方法不存在覆盖。(多态之后讲)

⑧覆盖指的是成员方法,和成员变量无关。

继承最基本的作用:代码重用。 继承最重要的作用:方法可以重写。

2.2.3 方法的重载与重写的区别

方法重载(Overload)的条件:

①方法名称相同

②方法参数类型、个数、顺序至少有一个不同

③方法的返回类型可以不同,因为方法重载和返回类型没有任何关系

④方法的修饰符可以不同,因为方法重载和修饰符没有任何关系

⑤方法重载只出现在同一个类中

方法覆盖(Override)的条件:

①必须要有继承关系

②覆盖只能出现在子类中,如果没有继承关系,不存在覆盖,只存在重载

③在子类中被覆盖的方法,必须和父类中的方法完全一样,也就是方法名,返回类型、参数列表,完全一样

④子类方法的访问权限不能小于父类方法的访问权限

⑤子类方法不能抛出比父类方法更多的异常,但可以抛出父类方法异常的子异常

⑥父类的静态方法不能被子类覆盖

⑦父类的私有方法不能覆盖

⑧覆盖是针对成员方法,而非属性

注意:两个方法要同为static或同为非static

public class Test01{

public static void main(String[] args){

//创建子类对象

Cat c = new Cat();

//调用方法

c.move();

Animal a = new Animal();

a.move();

}

}

//父类:动物

class Animal{

//成员方法

public void move(){

System.out.println("动物在移动!");

}

}

//子类:猫

class Cat extends Animal{

//Cat的move方法应该输出:猫在走猫步!

//Animal中的move方法已经无法满足Cat了。

//所以要在Cat类中对Animal类中的move方法进行重新定义(方法的覆盖,方法的重写,Overwrite,Override)

public void move(){

System.out.println("猫在走猫步!");

}

}

Java——方法的重写(覆盖)的更多相关文章

  1. Java 方法的重写

    方法重写规则: 1.子类要重写的方法与父类方法具有完全相同的返回类型+方法名称+参数列表: 2.子类要重写的方法的访问权限大于或者等于父类方法的访问权限: 3.子类要重写的方法不能抛出比父类方法更大的 ...

  2. Java方法的重写

    package Demo.oop.APP.Demo04; //启动器 public class application { public static void main(String[] args) ...

  3. Java类的设计----方法的重写、覆盖

    方法的重写.覆盖 在子类中可以根据需要对从父类中继承来的方法进行改造—覆盖方法(方法的重置.重写),在程序执行时,子类的方法将覆盖父类的方法. 覆盖方法必须和被覆盖方法具有相同的方法名称.参数列表和返 ...

  4. java中重载和覆盖(又称重写)的区别

    初次见到这两个单词并没有什么特别的感觉,但是时间长了,却发现书上一会儿用override,一会儿又用overload,搞得我的迷迷糊.于是就做了个总结,希望能对和我一样对这两个概念模糊不清的网友有一个 ...

  5. Java中方法的重写

    ★★前提:方法的重写建立在继承关系上★★ 在Java程序中,类的继承关系可以产生一个子类,子类继承父类,它具备了父类所有的特征,继承了父类所有的方法和变量. 所谓方法的重写是指子类中的方法与父类中继承 ...

  6. 【知了堂学习笔记】java 方法重载与重写的归纳

    方法重载:Java的方法重载,就是在类中可以创建多个方法,它们可以有相同的名字,但必须具有不同的参数,即或者是参数的个数不同,或者是参数的类型不同.调用方法时通过传递给它们的不同个数和类型的参数来决定 ...

  7. JAVA方法的重载(overload)和覆盖(override)

    方法的重载(overload)和覆盖(override) 有的时候,类的同一种功能有多种实现方式,到底采用哪种实现方式,取决于调用者给定的参数.例如我们最常用的System.out.println() ...

  8. java===java基础学习(12)---方法的重写和重载

    覆盖 / 重写(Override) 重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变.即外壳不变,核心重写! 重写的好处在于子类可以根据需要,定义特定于自己的行为. 也 ...

  9. static关键字什么意思?Java中是否可以覆盖一个private或者是static的方法?

    答案:“static”关键字表明一个成员变量或者是成员方法可以在没有所属的类的实例变量的情况下被访问.Java中static方法不能被覆盖,因为方法覆盖是基于运行时动态绑定的,而static方法是编译 ...

随机推荐

  1. 聚合函数 -AVG/MAX/MIN/STDDEV/VARIANCE/SUM/COUNT/MEDIAN

    ------------------------------------------聚合函数--------------------------------------------- --1: AVG ...

  2. 避免 Java 代码中的“坏味道”

    1.需要 Map 的主键和取值时,应该迭代 entrySet() 当循环中只需要 Map 的主键时,迭代 keySet() 是正确的.但是,当需要主键和取值时,迭代 entrySet() 才是更高效的 ...

  3. Spring Boot 2.0 常见问题总结(二)

    使用 IDEA 生成 POJO 实体类 a. 使用 idea 连接上需要操作的数据库. b. 选中要生成实体类的数据库表:右键 ---> Scripted Extensions ---> ...

  4. Comet Contest#11 F arewell(DAG计数+FWT子集卷积)

    传送门. 题解: 4月YY集训时做过DAG计数,和这个基本上是一样的,但是当时好像直接暴力子集卷积,不然我省选时不至于不会,这个就多了个边不选的概率和子集卷积. DAG计数是个套路来的,利用的是DAG ...

  5. Ubuntu下终端命令安装sublime

    Ubuntu下终端命令安装sublime出现软件包无法定位 sublime-text-install 且多次换源不成功 建议采用离线安装 安装教程如下 用Ubuntu上的浏览器下载一个 Sublime ...

  6. NX二次开发-NXOpenC++ Example

    NxOpenC++ Example NXOpen::WCS wcs坐标系 https://www.cnblogs.com/nxopen2018/p/11368763.html NXOpen::Draw ...

  7. iOS 如何计算UIWebView的ContentSize

    首选要等UIWebView加载内容后,然后在它的回调方法里将webview的高度Height设置足够小,就设置为1吧,因为这样才能用 sizeThatFits才能计算出webview得内容大小 - ( ...

  8. (转)OpenFire源码学习之七:组(用户群)与花名册(用户好友)

    转:http://blog.csdn.net/huwenfeng_2011/article/details/43413651 Group 在openfire中的gorop——组,也可以理解为共享组.什 ...

  9. CSS:CSS 列表

    ylbtech-CSS:CSS 列表 1.返回顶部 1. CSS 列表 CSS列表属性作用如下: 设置不同的列表项标记为有序列表 设置不同的列表项标记为无序列表 设置列表项标记为图像 列表 在HTML ...

  10. Openstack组件部署 — Nova_安装和配置Controller Node

    目录 目录 前文列表 Prerequisites 先决条件 To create the databases To create the service credentials Create the C ...