java编程思想笔记--多态
在面向对象的程序设计语言中,多态是继数据抽象和继承之后的第三种基本特征。
--java编程思想
-
个人理解
多态由数据抽象(例如抽象类,接口),继承实现
-
多态实现的必要条件:继承,重写或重载,向上引用
-
核心关键词:多态的作用,向上转型,方法调用绑定,缺陷
多态的作用
-
消除类型间的耦合关系,提高代码复用性
-
简单的说就是能少写代码,方便维护,逼格高
/*背景介绍:wind,stringed,brass都继承于instrument,上面是不使用多态的编写方式,下面使用多态*/ public class Music{ public static void tune(Wind i){ i.play(Note.MIDDLE_C); } public static void tune(Stringed i){ i.play(Note.MIDDLE_C); } public static void tune(Brass i){ i.play(Note.MIDDLE_C); } } //====================================分割线=============================== public class Music{ public static void tune(Instrument i){ i.play(Note.MIDDLE_C); } } //上下两部分的代码量差距看到了吗?!!
-
向上转型
-
概念:对某个对象的引用视为对其基类型
(他爸)的引用-
简单的说:做儿子的类想当老子,java说ok!!
class Grain { public String toString() { return "Grain"; } } class Wheat extends Grain { public String toString() { return "Wheat"; } } class Mill { Grain process() { return new Grain(); } } class WheatMill extends Mill { Wheat process() { return new Wheat(); } } public class CovariantReturn { public static void main(String[] args) { Mill m = new Mill(); Grain g = m.process(); System.out.println(g); m = new WheatMill(); //向上转型!! g = m.process(); System.out.println(g); } } /* Output: Grain Wheat *///:~
-
方法的绑定
- 绑定的概念:一个方法调用同一个方法主体关联起来(
没搞懂) - 前期绑定:程序执行前进行绑定,面向过程语言的标配,例如C语言就只有前期绑定
- 后期绑定:也称为动态绑定,运行时绑定,含义是程序运行是根据对象类型进行绑定
- Java除了static方法和final方法外(private属于final),其他所有方法都是后期绑定
- 备注:最后根据设计决定是否使用final,不要处于性能优化使用final,效果不明显
- 绑定仅在方法中,与变量无关
多态的不足
- 无法覆盖私有方法,不法继承,也就无从多态
- 类的变量与私有方法无法多态
网友评论