- 什么是多态?
- Programmer english = new English();
编译的类型 运行时的类型
-
- 创建一个子类对象,赋给父类的引用变量,通过父类的引用调用方法是,如果子类重写了,调用的是子类的
- 子类不同,输出结果不同,多种形态
- 多态的好处
- 减少了重载方法的数量
- 符合开闭原则,即使增加子类,不需要提供额外的方法
- 多态的前提
- 继承是多态的前提
- 子类重写父类的方法
- 将子类的对象赋给父类的引用,调用重写的方法
调用重写的方法即可多态
- 多态的使用场合
- 使用父类做方法的形参,实参可以是任意的子类类型(最重要的场合)
- 使用父类做方法的返回值类型,实际返回的可以是任意子类的对象
- 你见过的多态
- Public Boolean equals(Object obj){}
- Object做方法的形参,实参可以为任意类型
- 向上转型upcasting
- 子类转换为父类
- 代码
- Programmer pro= new English();//自动转换的 子类对象->父类引用
- pro.work();
- pro.eat();
- // pro.raceHorse();——向上转换,不好使
- 所得结论
- 父类引用=子类对象,自动转换
- 调用的子类继承的方法
- 调用的子类重写的方法
- 不调用子类特有的方法
- 理解向上转型
- 招聘程序员,来个英国国籍的程序员,满足要求,不需要特别声明
- 不管是哪个国籍的,写的代码都是Java代码
- 中午休息了,大家都去食堂开始吃饭了,原型毕露
-
老板随便招一个员工,说我们赛马吧,不可以;因为对方可能是中国或其他国家的人,不会赛马。