DESKTOP-AD6BCSN_张景安-2020-12-9

总结:

1 多态:

1.1 概念

百度百科:多态(Polymorphism)按字面的意思就是“多种状态”。在面向对象语言中,接口的多种不同的实现方式即为多态。引用Charlie Calverts对多态的描述——多态性是允许你将父对象设置成为一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作(摘自“Delphi4 编程技术内幕”)。简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。多态性在Object Pascal和C++中都是通过虚函数实现的

1.2 多态的理解

  1. 多态:父类的引用指向子类的实例
  2. 当父类的引用指向子类对象后,在父类引用调用方法时,只能调用子类从父类继承的方法或者被子类重写的方法(父类知道子类中有什么方法就能调用什么方法)。父类不能调用子类自增的方法,父类无法知道子类新增的方法如果子类重写了父类的方法,那么父类引用调用的就是子类的方法(父类引用指向哪个子类就调用哪个子类的方法)
  3. 父类引用指向子类对象时需要类型转换
  4. 子类引用指向父类对象需要强制转换;

1.3 注意事项:

  • 多态一定存在与继承关系中
  • 多态一定存在与方法重写中
  • 多态一定存在与父类引用指向子类对象中,父类引用指向哪个子类就能调用哪个子类的方法

1.4 多态的应用:

  • 可替换性:多态对已存在的代码具有可替换性。
  • 可扩充性:增加新的子类不影响已存在类的多样性、继承性,以及其他特性的运行和操作。实际新加子类更容易获得多态
  • 接口性:多态是父类向子类提供了一个共同接口,由子类具体实现。
  • 灵活性:多态在应用中体现了灵活多样的操作,提高了使用效率。
  • 简化性:多态简化了应用软件的代码编写和修改过程,尤其在处理大量对象的运算和操作时,这个特点尤为突出和重要。

1.5 类与类之间的三种关系:

  • is a 公共汽车 is a 汽车
  • use a 人 use a 铁锹
  • has a 人 has a 胳膊

2 instancesof运算符

if(pet instanceof Cat) {
    Cat cat = (Cat) pet;
    cat.climbTree();
}

instanceof运算符用于判断一个引用是否指向某个类的实例,返回boolean值。

标签

评论


© 2021 成都云创动力科技有限公司 蜀ICP备20006351号-1