第十八天:方法重写与多态

方法重写

前提

需要有继承关系,子类重写父类的方法

要求

  1. 方法名必须相同
  2. 参数列表必须相同
  3. 修饰符:范围可以扩大,但不能缩小;public > protected > default > private
  4. 抛出的异常:范围可以被缩小,但不能被扩大

子类的方法和父类必须要一致,方法体不同

为什么要重写

父类的功能,子类不一定需要,或者不一定满足

多态

笔记

在这里插入图片描述

代码演示

package oop.demo04;

public class Person {

    public void run() {
        System.out.println("跑起来");
    }
}
package oop.demo04;

public class Student extends Person{

    @Override
    public void run() {
        System.out.println("早上跑操");
    }

    public void eat(){
        System.out.println("去食堂吃饭");
    }
}

package oop.demo04;

public class Application {
    public static void main(String[] args) {

        //一个对象的实际类型是确定的

        //可以指向的引用类型就不确定了:父类的引用可以指向子类

        // Student 子类的方法都是自己的,或者继承父类的
        Student s1 = new Student();
        //Person 可以指向子类,但是不能调用子类独有的方法
        Person s2 = new Student();
        Person p1 = new Person();
        Object s3 = new Student();

        //对象能执行哪些方法,主要看对象左边的类型,和右边关系不大
        s1.run();
        s2.run();//子类重写了父类的方法,执行子类重写后的方法
        //如果子类和父类都有同一种方法,且子类没有对其进行重写,则会调用父类的方法
        p1.run();
        s1.eat();
        /*
        早上跑操
        早上跑操
        跑起来
        去食堂吃饭

         */

    }

}

多态注意事项

  1. 多态是方法的多态,属性没有多态
  2. 父类和子类,有联系才可以转换,否则会报类型转换异常 ClassCastException
  3. 存在条件:要有继承关系,且子类方法重写,父类引用指向子类对象 Father f1 --> Son();

补充

  1. static 方法属于类,不属于实例,无法被重写
  2. final 常量,在常量池类,无法被重写
  3. private 私有,也无法被重写,没有重写就没有多态
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值