JAVASE之多态
2016-01-07 22:43
375 查看
多态只存在与对象中,在一个类中只有非静态的成员函数有多态,
成员变量和静态的方法都是没有多态的,即是由编译时的类型来决定。
1.所谓的多态就是一个父类对象的引用指向了子类的,在实际的开发中这种用法是
很多的,使用多态的时候只能使用父类有的方法,如果要使用子类特有的方法就
要使用向下类型的转化。
2.注意多态中的成员变量和函数的区别,如果一个父类引用指向了一个子类的对象
当这个对象调用子类覆盖父类的方法的时候,这时候调用的其实就是子类的方法,但是
当使用该对象调用成员变量的时候就会调用父类的变量了,这里要注意覆盖只能在函数
中,而不能在成员变量中,可以简单的理解,成员变量的调用时根据编译时的类型来决定
的,而函数是运行时来决定的。
3.一般不会再子类中定义一个和父类一样的成员变量,如上的用法只是在面试的时候会
问道。
4.多态是对于对象而言的,没有对象就没有多态,在成员函数中,如果成员函数是静态的
函数,那么就没有多态的概念,当一个父类的引用指向子类对象的时候,这时如果调用
父类和子类都有的一个静态的方法的时候,就会调用到父类的静态的方法,而不会去调用
到子类的方法中,因为挡在编译的时候就已经将静态的方法加载到了静态的代码块中了,
所以此时运行的就是编译时候的类型的方法了。
成员变量和静态的方法都是没有多态的,即是由编译时的类型来决定。
1.所谓的多态就是一个父类对象的引用指向了子类的,在实际的开发中这种用法是
很多的,使用多态的时候只能使用父类有的方法,如果要使用子类特有的方法就
要使用向下类型的转化。
2.注意多态中的成员变量和函数的区别,如果一个父类引用指向了一个子类的对象
当这个对象调用子类覆盖父类的方法的时候,这时候调用的其实就是子类的方法,但是
当使用该对象调用成员变量的时候就会调用父类的变量了,这里要注意覆盖只能在函数
中,而不能在成员变量中,可以简单的理解,成员变量的调用时根据编译时的类型来决定
的,而函数是运行时来决定的。
3.一般不会再子类中定义一个和父类一样的成员变量,如上的用法只是在面试的时候会
问道。
4.多态是对于对象而言的,没有对象就没有多态,在成员函数中,如果成员函数是静态的
函数,那么就没有多态的概念,当一个父类的引用指向子类对象的时候,这时如果调用
父类和子类都有的一个静态的方法的时候,就会调用到父类的静态的方法,而不会去调用
到子类的方法中,因为挡在编译的时候就已经将静态的方法加载到了静态的代码块中了,
所以此时运行的就是编译时候的类型的方法了。
相关文章推荐
- C#与.net高级编程 C#的多态介绍
- C#中面向对象编程机制之多态学习笔记
- C#中的多态深入理解
- C#中多态、重载、重写区别分析
- 设计引导--一个鸭子游戏引发的设计理念(多态,继承,抽象,接口,策略者模式)
- c#基础学习之多态
- PHP面向对象三大特点学习(充分理解抽象、封装、继承、多态)
- 从汇编看c++中多态的应用
- javascript 面向对象全新理练之继承与多态
- Java多态的使用注意事项
- C#使用虚拟方法实现多态
- 实例讲解PHP面向对象之多态
- C#中多态现象和多态的实现方法
- C++基础之this指针与另一种“多态”
- 深入解析C++中的虚函数与多态
- C++多态的实现及原理详细解析
- PHP5中实现多态的两种方法实例分享
- 举例讲解PHP面对对象编程的多态
- 学习JavaScript设计模式(多态)
- js中实现多态采用和继承类似的方法