2018/12/11渡课(java三大特性——多态)

一、基本含义

语法:父类名 对象名 = new 子类名();

关键字含义
含义同一个接口,使用不同的实例,进而执行不同的操作
优点灵活、简化、接口性、可替换、扩充性,消除类型间的耦合关系
必要条件继承、重写、父类引用指向子类对象

二、注意事项

Animal cat = new Cat();
cat.eat();

1、当使用多态方式调用方法时:

  1. 检查父类是否有该方法,有无出错。

  2. 父类有该方法时,去调用子类同名方法,这个过程也叫虚拟方法

    Cat cat = new Cat();
    cat.eat();

2、当不使用多态方式调用方法时:

  1. 不会查看父类。
  2. 直接调用子类方法。

3、父类引用指向子类对象

  1. 对象名。object
  2. 对象类型。父类名
  3. 选用的构造函数。子类构造器

三、多态的实现方式

  1. 方式一——重写
  2. 方式二——接口
  3. 方式三——抽象类和抽象方法
实参类型示例
基本数据类型cat.eat(“苹果”)
引用数据类型num.findMax(arr1)
实例数据类型eat(newCat())

四、强制转换——父子间

原则:
1.直接转换:子转父
2.强制转换:父转子

// =====================各自对应类定义对象===================
// 情况1:子可直接转父。
Animal animal = new Animal();
Cat cat = new Cat();
animal = cat; // 结果:正确
// 情况2:子可直接转父,但不能同时重复转。
Animal animal = new Animal(); // 创建实例对象animal
Cat cat = new Cat(); // 创建实例对象cat
Dog dog = new Dog(); // 创建实例对象dog
animal = cat; // 结果:正确。子可直接转父
animal = dog; // 结果:错误。但不能同时重复转
// 情况3:父可强制转子。
Animal animal = new Animal(); // 创建实例对象animal
Cat cat = new Cat(); // 创建实例对象cat
cat = (Cat)animal; // 结果:正确。父可强制转子。
// =====================多态定义对象===================
// 情况1:子可直接转父。
Animal animal = new Animal();
Animal cat = new Cat(); // 
animal = cat; // 结果:正确。
// 情况2:子可直接转父,但不能同时重复转。
Animal animal = new Animal();
Animal cat = new Cat();
animal = cat; // 结果:正确。
animal = dog; // 结果:出错。
// 情况3:父可强制转子。
Animal animal = new Animal();
Animal cat = new Cat();
Cat cat = new Cat();
cat = (Cat)animal; // 正确。父可强制转子。 
// =====================各自对应类定义对象和多态定义对象===================
// 情况1: 。
Animal cat1 = new Cat();
Cat cat2 = new Cat();
cat2 = cat1;  //  出错 
cat1 = cat2; // 正确
// 情况2: 。
Animal cat1 = new Cat();
Cat cat2 = new Cat();
cat2 = (Cat)cat1;  // 正确 
cat1 = cat2; // 正确
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值