什么是重写?

重写,也叫做覆盖,当父类中的方法无法满足子类需求时,子类可以将父类的方法进行重写编写来满足需求。比如孩子继承了父亲的房子,可以将房子重新装修。

方法重写的条件:

  • 两个类必须是继承关系
  • 必须具有相同的方法名,相同的返回值类型,相同的参数列表.
  • 重写的方法不能比被重写的方法拥有更低的访问权限。
  • 重写的方法不能比被重写的方法抛出更宽泛的异常。(关于异常后面的章节再讲。)
  • 私有的方法不能被重写。
  • 构造方法无法被重写,因为构造方法无法被继承。
  • 静态的方法不存在重写。
  • 重写指的是成员方法,和成员变量无关。

    先定义一个动物类
class Animal {

    public void eat() {
System.out.println("吃饭");
} public void sleep() {
System.out.println("睡觉");
}
}
定义一个Cat类继承Animal class Cat extends Animal { public void eat() {
System.out.println("吃猫粮");//猫喜欢吃猫粮
}
}

定义一个Dog类继承Animal

class Dog extends Animal {

    public void eat() {
System.out.println("吃狗粮");//狗喜欢吃狗粮
}
}

Animal测试类

public class AnimalTest01 {
public static void main(String[] args) {
Cat c = new Cat();
c.eat(); Dog d = new Dog();
d.eat();
}
}

上代码中的Cat类和Dog类在调用父类Animal中的eat方法时已经不能很好的满足自身的需求了,所以都将eat类进行了重写。

静态的方法不存在重写

public class Test01{

    public static void main(String[] args){

        A.m1();
B.m1();
}
} class A{ //静态方法
public static void m1(){
System.out.println("A中静态方法m1");
}
} class B extends A{ //尝试重写父类的静态方法
public static void m1(){
System.out.println("B中静态方法m1");
}
}

1-9方法的重写(override)的更多相关文章

  1. [18/11/29] 继承(extends)和方法的重写(override,不是重载)

    一.何为继承?(对原有类的扩充) 继承让我们更加容易实现类的扩展. 比如,我们定义了人类,再定义Boy类就只需要扩展人类即可.实现了代码的重用,不用再重新发明轮子(don’t  reinvent  w ...

  2. 方法的重写(override / overwrite)

    1.重写:子类继承父类以后,可以对父类中同名同参数的方法,进行覆盖操作 2.应用:重写以后,当创建子类对象以后,通过子类对象调用子父类中的同名同参数的方法时,实际执行的是子类重写父类的方法. 重写的规 ...

  3. 方法的重写(Override)与重载(Overload)的含义与区别

    1.Override(重写) 两同,两小,一大 两同:方法名相同,参数列表相同 两小:抛出的异常要小于等于父类,返回值类型要小于等于父类 一大:访问权限要大于等于父类 2.Overload(重载) 方 ...

  4. document.getElementsByClassName方法的重写(OVERRIDE)

    众所周知,对于IE8以下的浏览器(IE8居然是WIN7预装的)没有document.getElementsByClassName,网上也有很多重写的方法,以下是本人在项目中所使用的方法 documen ...

  5. 重写Override ToString()方法

    使用一个小例子来演示: 创建一个普通类别: class Ax { private int _ID; public int ID { get { return _ID; } set { _ID = va ...

  6. C#-面向对象的三大特性——多态(虚方法与重写、抽象类、接口)

    多态 同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果.在运行时,可以通过指向基类的指针,来调用实现派生类中的方法. 编译时的多态性:编译时的多态性是通过重载来实现的.对于非虚的成员来说 ...

  7. 多态,虚拟方法,重写,接口,类库,委托,is,as运算符,泛型集合,万能变量

    多态:简而言之就是龙生九子,各有不同 有了继承,才有了多态 1.虚方法 virtual重写 override父类中的方法,在子类中并不适用,那么子类需要自主更改继承的方法或者是属性,那父类中加了vir ...

  8. java 面向对象(十三):面向对象的特征二:继承性 (二) 方法的重写

    1.什么是方法的重写(override 或 overwrite)?子类继承父类以后,可以对父类中同名同参数的方法,进行覆盖操作. 2. 应用:重写以后,当创建子类对象以后,通过子类对象调用子父类中的同 ...

  9. C#中隐藏(new)、方法重写(override)、重载(overload)的区别

    转自:http://www.cnblogs.com/glife/archive/2009/12/28/1633947.html 重载.重写和隐藏的定义: 重载:public string ToStri ...

随机推荐

  1. VUE 之 vuex 和 axios

    1.Vuex 部分 1.1 Vuex 是专门为vue.js设计的集中式状态管理架构,其实就是将数据存在一个store中,共各个组件共享使用 1.2 配置: 1.2.1 下载:--npm install ...

  2. 关于yum的一些基本的东西

    1 sqlite数据库的使用 第一,某个centos版本的包相关的信息都放在一个服务器端的sqlite数据库文件中,yum会下载到本地,进行包安装的时候用. 第二,安装的历史记录放在sqlite数据库 ...

  3. java map 装入list

    需要生成多组数据的时候,应将map时候放入循环,否则循环出来会一直覆盖之前的,只能保存一条数据. 具体如下: if (rs.next()) { do { Map<String, String&g ...

  4. vue中引入字体文件

    在用vue来写一官网的时候,想引入外部字体文件,毕竟总感觉他自己的字体有点难看,在这里记录下 1.先下载字体文件所需的.ttf文件 我这里想引入的是华文行楷字体 百度后下载了一个3M多的ttf文件 2 ...

  5. linux子系统的初始化_subsys_initcall()

    http://my.oschina.net/u/572632/blog/305492#OSC_h1_3

  6. 装饰器模式(IO流案例)

    装饰器模式,也成为包装模式,顾名思义,就是对已经存在的某些类进行装饰,以此来扩展一些功能.其结构图如下: Component为统一接口,也是装饰类和被装饰类的基本类型. ConcreteCompone ...

  7. MYSQL初级学习笔记六:子查询!(视频序号:初级_42 | 43)

    知识点八:子查询(42) 什么是子查询: 子查询是将一个查询语句嵌套在另一个查询语句中.内层查询语句的查询结果,可以作为外层查询语句提供条件. 引发子查询的情况: 使用[NOT] IN 的子查询 -- ...

  8. Linux系统中的运行级别

    什么是运行级呢?简单的说,运行级就是操作系统当前正在运行的功能级别. 它让一些程序在一个级别启动,而另外一个级别的时候不启动. Linux系统的有效登录模式有0~9共十种,不过沿用UNIX系统的至多6 ...

  9. HDU5890:Eighty seven(Bitset优化背包)

    Mr. Fib is a mathematics teacher of a primary school. In the next lesson, he is planning to teach ch ...

  10. 【Sdoi2008】沙拉公主的困惑

    [题目链接] 点击打开链接 [算法] gcd(a,b)=gcd(a mod b, b),又m!|n!          则有ans=(n!/m!)·ϕ(m!)          由ϕ(n)=n(1-1 ...