0
点赞
收藏
分享

微信扫一扫

【Java基础笔记】第二十一章 多态

ZMXQQ233 2022-01-16 阅读 47

目录

前言

  • 该文章为Java基础自学笔记
  • 其他内容:Java基础学习笔记目录
  • 学习用书:
    《Java核心技术 卷Ⅰ 基础知识(第10版)》
    《Java经典编程300例》

第二十一章 多态

  • 面向对象的三大特征:封装、继承、多态
  • 同类型的对象,执行同一个行为,会表现出不同的行为特征

21.1 多态的常见形式

	父类类型 对象名称 = new 子类构造器;
	接口 对象名称 = new 实现类构造器;

21.2 多态中成员访问特点(重点)

public abstract class Animal {
	public String name = "父类——动物";
	public abstract void eat();
}

class Dog extends Animal {
	public String name = "子类——狗";
	@Override
	public void eat() { System.out.println("狗吃骨头");}
}
  • 方法调用: 编译看左边,运行看右边
	Animal animal = new Dog();
	animal.eat(); // 运行结果:狗吃骨头
  • 变量调用: 编译看左边,运行看左边(多态侧重行为多态)
	Animal animal = new Dog();
	System.out.println(animal.name); // 运行结果:父类——动物

21.3 多态的前提

  • 有继承/实现关系
  • 有父类引用指向子类对象
  • 有方法重写

21.4 多态的特点

  • 在多态形式下,右边对象可以实现解耦合,便于扩展和维护
	Animal animal = new Dog();
	animal.eat();

可直接将new Dog()修改为new Cat(),后续业务行为随对象而变,后续代码无需修改

	Animal animal = new Cat();
	animal.eat();
  • 定义方法的时候,使用父类型作为参数,该方法就可以接收者父类的一切子类对象,体现出多态的扩展性与便利
	public void go(Animal a) {
		a.eat();
	}
	Animal a1 = new Dog();
	go(a1);
	Animal a2 = new Cat();
	go(a2);
  • 多态下不能使用子类的独有功能

21.5 多态下引用数据类型的类型转换

举报

相关推荐

0 条评论