假期作业,多态

理解

多态:一种事物有多种表现形式。

生活中的多态:
打招呼:
中国人:你好
英国人:hello
日本人:拷逆七娃
韩国人:阿娘哈赛you
泰国人:萨瓦迪卡
多态的体现
1、方法的多态性
方法的重写和重载

(1)重写(override)
子类定义一个与父类方法的方法签名以及返回值类型完全相同的方法就叫做重写,也可称为覆    写。
重写父类方法时,方法的访问修饰符只能大于或等于父类方法的访问修饰符
重写的规则(引用自甜加冰.com):
(1)参数列表必须完全与被重写方法的相同;
(2)返回类型必须完全与被重写方法的返回类型相同;
(3)访问权限不能比父类中被重写的方法的访问权限更低。(例如:如果父类的一个方法被声明为public,那么在子类中重写该方法就不能声明为protected)
(4)父类的成员只能被它的子类重写;
(5)声明为final的方法不能被重写;
(6)声明为static的方法不能被重写,但是能够被再次声明;
(7)子类和父类在同一个包中,那么子类可以重写父类所有出了声明为private和final的方法;
(8)子类和父类不在同一个包中,那么子类只能够重写父类的声明为public和protected的非final方法;
(9)重写的方法能够抛出任何非强制异常,无论被重写的方法是否抛出异常。但是,重写的方法不能抛出新的强制性异常,或者比被重写方法声明的更广泛的强制性异常,反之则可以。
(10)构造方法不能被重写;
(11)如果不能继承一个方法,则不能重写这个方法;

(2)重载(overload)
方法的重载描述的是一种现象,假设现在存在一个方法,现在我又新建了另外一个方法,该方法我们称为新方法,我们让新方法方法名与原方法相同,而形式参数列表与原方法不同。这就叫做方法的重载。
 重载的规则(引用自甜加冰.com):
(1)方法名字相同
(2)被重载的方法必须形参列表不一样(参数个数或类型不一样);
(3)被重载的方法可以改变返回类型;
(4)被重载的方法可以改变访问修饰符;
(5)返回值类型不能作为重载函数的区分标准。
(6)被重载的方法可以声明新的或更广的检查异常;
(7)方法能够在同一个类中或者在一个子类中被重载。

2、对象的多态性
对象的转型上。
Person p = new Student();

重写与重载之间的区别:
方法重载是一个类中定义了多个方法名相同,而他们的参数的数量不同或数量相同而类型和次序不同,则称为方法的重载(Overload);方法重写是在子类存在方法与父类的方法的名字相同,而且参数的个数与类型一样,返回值也一样的方法,就称为重写(Override);方法重载是一个类的多态性表现,而方法重写是子类与父类的一种多态性表现。

引用类型之间的类型转换(对象的多态)
前提:父子关系
一、向上转型
本质:父类的引用指向了子类的对象
语法:
父类类型 引用名 = new 子类类型();
特点:
编译看左边,运行看右边
可以调用父类类型中的所有成员,不能调用子类类型中特有成员;最终运行效果看子类的具体实现!
二、向下转型
语法:
子类类型 引用名 = (子类类型)父类引用;
特点:
①只能强转父类的引用,不能强转父类的对象
②要求父类的引用必须指向的是当前目标类型的对象
③可以调用子类类型中所有的成员

实例1:用来说明向上转型时,对于属性则访问左边类型,对于子类重写方法,则调用方法是访问的是子类的方法

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值