java多态的理解
2017-12-07 15:35
169 查看
多态的定义:指允许不同类的对象对同一消息做出不同的响应。
上面的说法可能有点难懂,借用网上一个实例:
这样就很好理解了,通俗点讲,同一消息根据对象的不同也会有不同的结果(发送消息就是调用方法)。
实现多态的方式称为动态绑定,动态绑定指的是程序中定义的引用变量在编码的时候并不确定,而是在程序的运行的时候才确定,引用调用的方法也不确定,也只有在程序运行的时候才能够确定。这样就可以让引用动态绑定到不同的类上。
多态的实现基础是向上转型,向上转型是指将父类的引用指向子类的对象。
class Father{
int age;
public void teach(){
System.out.println("父亲教儿子");
}
}
class Son extends Father{
int age;
public void learn(){
System.out.println("儿子向父亲学习");
}
} 现在有两个类,一个是Father类,一个是Son类,Son类继承了Father类。
Son son = new Son();//子类的定义
Father father = new Son();//向上转型 下面就是向上转型,这样做有一个非常大的好处,father是父类的引用,当然他可以使用父类所有的方法,也可以使用子类的方法,而且当有多个子类的时候,父类的引用可以随时指向另一个子类。比如说现在有一个Son2类,我们只需要使Father
father = new Son2();这样我们就可以使用Son2中方法了。但是向上转型也有缺点,他会丢失子类特有的方法。
指向子类的父类引用由于向上转型了,它只能访问父类中拥有的方法和属性,而对于子类中存在而父类中不存在的方法,该引用是不能使用的,尽管是重载该方法。若子类重写了父类中的某些方法,在调用该些方法的时候,必定是使用子类中定义的这些方法(动态连接、动态调用)。
实现多态的三个必要条件:继承、重写、向上转型。
对于引用子类的父类类型,在处理该引用时,它适用于继承该父类的所有子类,子类对象的不同,对方法的实现也就不同,执行相同动作产生的行为也就不同。
上面的说法可能有点难懂,借用网上一个实例:
比方说按下 F1 键这个动作,如果当前在 Flash 界面下弹出的就是 AS 3 的帮助文档;如果当前在 Word 下弹出的就是 Word 帮助;在 Windows 下弹出的就是 Windows 帮助和支持。同一个事件发生在不同的对象上会产生不同的结果。
这样就很好理解了,通俗点讲,同一消息根据对象的不同也会有不同的结果(发送消息就是调用方法)。
实现多态的方式称为动态绑定,动态绑定指的是程序中定义的引用变量在编码的时候并不确定,而是在程序的运行的时候才确定,引用调用的方法也不确定,也只有在程序运行的时候才能够确定。这样就可以让引用动态绑定到不同的类上。
多态的实现基础是向上转型,向上转型是指将父类的引用指向子类的对象。
class Father{
int age;
public void teach(){
System.out.println("父亲教儿子");
}
}
class Son extends Father{
int age;
public void learn(){
System.out.println("儿子向父亲学习");
}
} 现在有两个类,一个是Father类,一个是Son类,Son类继承了Father类。
Son son = new Son();//子类的定义
Father father = new Son();//向上转型 下面就是向上转型,这样做有一个非常大的好处,father是父类的引用,当然他可以使用父类所有的方法,也可以使用子类的方法,而且当有多个子类的时候,父类的引用可以随时指向另一个子类。比如说现在有一个Son2类,我们只需要使Father
father = new Son2();这样我们就可以使用Son2中方法了。但是向上转型也有缺点,他会丢失子类特有的方法。
指向子类的父类引用由于向上转型了,它只能访问父类中拥有的方法和属性,而对于子类中存在而父类中不存在的方法,该引用是不能使用的,尽管是重载该方法。若子类重写了父类中的某些方法,在调用该些方法的时候,必定是使用子类中定义的这些方法(动态连接、动态调用)。
实现多态的三个必要条件:继承、重写、向上转型。
对于引用子类的父类类型,在处理该引用时,它适用于继承该父类的所有子类,子类对象的不同,对方法的实现也就不同,执行相同动作产生的行为也就不同。
相关文章推荐
- java提高篇-----理解java的三大特性之多态
- java多态,如何理解父类引用指向子类对象
- 【JAVA学习】5.重写的概念理解和多态、final
- 黑马程序员_JAVA基础_多态的理解
- Java基础 对封装、继承、多态、抽象的理解
- java多态,如何理解父类引用指向子类对象
- 对java多态的理解
- java多态理解
- java多态的理解
- java提高篇(三)-----理解java的三大特性之多态
- 对java继承,多态,抽象类,接口的理解
- java提高篇之理解java的三大特性——多态
- 如何理解Java面向对象的多态
- java提高篇(四)-----理解java的三大特性之多态
- java提高篇(三)-----理解java的三大特性之多态
- java多态的理解
- java提高篇(三)-----理解java的三大特性之多态
- java提高篇-----理解java的三大特性之多态
- 2015.4.21.09.05_多态_2015.4.21_深入理解java多态性_0.01
- java多态的理解