关于方法重写/方法覆盖

/**
 * 回顾方法重载:
 *     - 方法重载又称为Overload
 *     - 方法重载的使用时机:
 *           * 在同一个类当中,方法完成的功能相似,建议方法名相同,这样方便程序员的编程,就像在调用同一个方法似的
 *     - 满足什么条件才构成方法重载:
 *           * 在同一个类当中
 *           * 方法名相同
 *           * 参数列表不同:类型不同、顺序不同、个数不同都叫不同
 *     - 方法重载和什么无关:
 *           * 和方法的修饰符列表无关
 *           * 和方法的返回值类型无关
 * 关于方法覆盖:
 *     - 方法覆盖又称为方法重写/override(overwrite)
 *     - 什么时候用到方法覆盖
 *           当父类中的方法已经无法满足当前子类的业务需要,子类有必要将从父类中继承过来的方法进行重新编写,这个编写的过程称为方法重写/方法覆盖
 *     - 代码满足什么条件之后,就构成了方法覆盖:
 *           * 方法覆盖发生在具有继承关系的父子类之间
 *           * 方法覆盖的时候要求:返回值类型相同,方法名相同,形参列表相同
 *           * 方法覆盖的时候要求:和父类相比访问权限不能更低,可以更高
 *           * 方法覆盖的时候要求:和父类相比抛出异常不能更多,可以更少
 *           * 对于返回值类型来说:覆盖后的方法 如果是基本数据类型必须一致,而引用数据类型可以变小
 *                               (但实际开发中意义不大,几乎没有人这样使用)
 *
 *     - 建议方法覆盖的时候尽量复制粘贴,编写容易出错,导致覆盖没有发生
 *     - 注意:
 *           * 私有方法无法覆盖
 *           * 构造方法不能被继承,所以不能覆盖
 *           * 方法覆盖只针对实例方法,静态方法覆盖没有意义(方法覆盖通常和多态联合使用)
 *           * 覆盖只针对方法,不针对属性
 */
public class OverrideText {
    public static void main(String[] args) {
//       创建cat对象
        Cat c = new Cat();
        c.move();
//        创建bird对象
        Bird b = new Bird();
        b.move();
//        创建鹦鹉对象
        YingWu y = new YingWu();
        y.move();
    }
}

/*

方法没有重写程序运行结果如下:

动物在移动
动物在移动
动物在移动

*/

/*

方法重写后程序运行结果如下:

猫在抓老鼠
鸟儿在飞行
鹦鹉在学说话

*/

/*
//子类没有重写父类方法的代码
//Cat类继承Animal类
public class Cat extends Animal {
}
//Bird类继承Animal类
public class Bird extends Animal {
}
//YingWu类继承Animal类
public class YingWu extends Bird {
}

*/

//子类重写父类的代码如下:

//Cat类继承Animal类
public class Cat extends Animal {
    //重写父类的move()方法
    public void move() {
        System.out.println("猫在抓老鼠");
    }
}
//Bird类继承Animal类
public class Bird extends Animal {
    //重写父类的move()方法
    public void move() { 
        System.out.println("鸟儿在飞行");     
    }    
}
//YingWu类继承Animal类
public class YingWu extends Bird {
    public void move() {
        System.out.println("鹦鹉在学说话");
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值