关于子类父类对象强制转换问题

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

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

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

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

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/

 

 

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

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

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

 

上一篇:centos 6.3 64bit 用tcmalloc优化nginx


下一篇:java多态和强制类型转换