JAVA多态与类型转化分析
2011-09-02 10:35
267 查看
JAVA多态与类型转化分析 |
多态与类型转化原理分析: 一、多态性:超类引用在运行时既能代表超类本身的对象,也能代表其子类的对象的能力。 类的一个成员若想表现多态必须可以被覆盖: 对于成员变量而言,不会发生覆盖现象(会隐藏),在子类出现相同变量的定义时只会隐藏父类变量,因此不会表现多态。同时变量调用在编译时就会解析,不符合动态绑定的特征; 在成员方法中,静态方法和final方法(private方法)也不会发生覆盖现象(会隐藏),因此也不会表现多态性。 因此只有除静态方法和final方法以外的方法才会表现多态性。 二、向上类型转化时: 丢失添加的方法和字段,剩余的为: 基类字段 基类静态方法或final方法 //前二者为不能被覆盖的成员,因此保留,无多态性 基类其他方法(若被子类覆盖则为子类覆盖的新方法) package test3; class oopsuper { static String str = "父类字段"; public void publicMethod(){System.out.println("父类public方法");} protected void protectedMethod(){System.out.println("父类protected方法");}//(1) private void privateMethod(){System.out.println("父类private方法");} static void staticMethod(){System.out.println("父类静态方法"); } } public class oopsub extends oopsuper { String str = "子类字段"; public void publicMethod(){System.out.println("子类public方法");} protected void protectedMethod(){System.out.println("子类protected方法");}//(2) private void privateMethod(){System.out.println("子类private方法");} static void staticMethod(){System.out.println("子类静态方法"); } public static void main(String[] args) { oopsuper upcast = new oopsub(); System.out.println(upcast.str);//方法调用才具有多态性,而域没有多态性 // 能被覆盖的方法的行为才有多态特性 upcast.publicMethod(); upcast.protectedMethod();//若注释掉(1)则有错误;若注释掉(2)则输出:子类protected方法 // 不能被覆盖的方法[final方法(含私有方法)、静态方法]的行为不具有多态特性 // upcast.privateMethod();访问的是父类的私有方法,不能访问,不具有多态现象 upcast.staticMethod(); } } |
相关文章推荐
- JAVA多态与类型转化分析-------》域没有多态性
- Java的多态与类型转化分析
- 深度分析Java的枚举类型—-枚举的线程安全性及序列化问题
- java类型转化错误
- Java与C连动时的数据类型分析
- 常用Java类型转化小技巧(不断添加中)
- java 多态,和方法覆盖分析(转)
- Java方法的可变参数类型实例分析
- Java各种数据类型之间的转化
- Android中java和smali转化一键化操作工具java2smali原理分析
- java变量类型转化
- Java 8 动态类型语言Lambda表达式实现原理分析
- 使用Java sound播放音频文件出现“文件类型不支持”报错的原因分析
- JAVA String时间转化为数据库Date类型
- Java基础知识强化59:String(字符串)和其他类型的相互转化
- Java/Android引用类型及其使用分析
- java中Long类型数据必须转化为int才能正确比较
- JAVA IO分析二:字节数组流、基本数据&对象类型的数据流、打印流
- Java基础12 类型转换与多态
- Java 接收String类型的日期参数并转化成Date类型