面向对象 (4):向上造型、重写

系列文章目录

例如:第四章 面向对象 :向上造型、重写


一、向上造型:

(1)超类型的引用指向派生类的对象.
//动物是动物
Animal o = new Animal();
//老虎是老虎
Tiger o = new Tiger();
//老虎是动物
Animal o = new Tiger();
//动物是老虎----语义不通
Tiger o = new Animal(); //编译错误

先建两个类:
class Animal{ //动物类
}
class Tiger extends Animal{ //老虎类---------继承要符合is a(是一个)的关系
}

(2)能点出来什么,看引用的类型-------这是规定,不需要理解
超类 派生类
Person p1 = new Student();
Person p2 = new Teacher();
Person p3 = new Doctor();
p1/p2/p3. 只能点出Person中的

超类 派生类
Animal o = new Tiger();
o. 只能点出Animal中的

在这里插入图片描述

代码如下(示例):
在这里插入图片描述
创建一个Person超类,student,teacher,Doctor三个派生类

在这里插入图片描述

二、方法的重写(Override):重新写、覆盖

当子类的重写方法被调用时(无论是通过子类的引用调用还是通过父类的引用调用),运行的是子类的重写后的版本
1)发生在父子类中,方法名相同,参数列表相同,方法体不同
代码如下(示例):这是学生类,子类
在这里插入图片描述
代码如下(示例):这是超类,父类
在这里插入图片描述上面子类中的StuID是学生类所特有的属性, 要想输出学生类中的StuID的结果必须要重写方法,就是在学生类中添加一个与父类相同的方法,然后在方法体中加入需要输出的特殊属性就可以了

2)重写方法被调用时,看对象的类型—这是规定,不需要理解
代码如上图(示例):

3)重写遵循"两同两小一大"原则:-----------了解
3.1)两同:
3.1.1)方法名相同
3.1.2)参数列表相同
3.2)两小:
3.2.1)派生类方法的返回值类型小于或等于超类方法的
1)void时,必须相同
2)基本类型时,必须相同
3)引用类型时,小于或等于
3.2.2)派生类方法抛出的异常小于或等于超类方法的
3.3)一大:
3.3.1)派生类方法的访问权限大于或等于超类方法的
在这里插入图片描述

3.重写与重载的区别:
1)重写:
1.1)发生在父子类中,方法名相同,参数列表相同,方法体不同
必须是父子类中
1.2)遵循"运行期绑定",看对象的类型来调用方法

2)重载:
2.1)发生在同一类中,方法名相同,参数列表不同,方法体不同
2.2)遵循"编译期绑定",看参数/引用的类型来绑定方法
代码如下(示例):例一
在这里插入图片描述
代码如下(示例):例二
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值