zoukankan      html  css  js  c++  java
  • 关于子类父类对象强制转换问题

    子类对象可以赋值给父类对象;

    子类包含的成员方法和成员变量 要比 父类的多;

    子类包含父类的成员方法和成员变量;

    对于类对象的强制转换,也就是说,必须先将子类定义的对象赋给父类定义的对象之后才能用子类强制转换 赋给 新的子类对象

    class AA{
    	
    	AA(){
    		System.out.println("a");
    	}
    	void a1() {
    		System.out.println("a1");
    	}
    }
    
    class BB extends AA{
    	
    	BB(){
    		System.out.println("b");
    	}
    	void b1() {
    		System.out.println("a1");
    	}
    }
    public class q {
     
       public static void main(String[] args) {
    	   BB b = new BB();
    	   AA a = new AA();
    	   a=b;
    	   BB c = (BB)a;
    	   
       }
    }
    

     上面运行时正确的,如果子类定义的对象不赋给父类定义的对象的话,编译运行就会出现错误;

    定义的对象没有相互联系起来,所以不能类强制转换。

    package mytest;
    
    import java.io.IOException;
    
    
    class AA{
    	
    	AA(){
    		System.out.println("a");
    	}
    	void a1() {
    		System.out.println("a1");
    	}
    }
    
    class BB extends AA{
    	
    	BB(){
    		System.out.println("b");
    	}
    	void b1() {
    		System.out.println("a1");
    	}
    }
    public class q {
     
       public static void main(String[] args) {
    	   BB b = new BB();
    	   AA a = new AA();
    	  // a=b;
    	   BB c = (BB)a;
    	   
       }
    }
    
    
    aException in thread "main" 
    b
    a
    java.lang.ClassCastException: mytest.AA cannot be cast to mytest.BB
    	at mytest.q.main(q.java:31)
    

     来源:http://www.cnblogs.com/xiaobo-Linux/

    父类对象和子类对象引用同一个对象;

    父类对象和子类对象所引用的空间内存是相同的;

    子类对象可以赋值给父类对象;

  • 相关阅读:
    实验四 (1):定义一个形状类(Shape)方法:计算周长,计算面积
    计算机结构的简化模型
    memcached性能测试之Twemperf
    Eclipse UML小工具AmaterasUML的配置和使用
    Kafka中文官方文档
    HBase Snapshot简介
    shell脚本学习系列之一---入门
    linux中shell变量$#,$@,$0,$1,$2的含义解释
    vim常用操作
    Linux多台主机间配置SSH免密登陆
  • 原文地址:https://www.cnblogs.com/zhaocundang/p/7722279.html
Copyright © 2011-2022 走看看