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

简介: 子类对象可以赋值给父类对象; 子类包含的成员方法和成员变量 要比 父类的多; 子类包含父类的成员方法和成员变量; 对于类对象的强制转换,也就是说,必须先将子类定义的对象赋给父类定义的对象之后才能用子类强制转换 赋给 新的子类对象 class AA{ AA(){ System.

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

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

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

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

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/

 

 

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

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

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

 

目录
相关文章
|
SQL 存储 监控
FlinkSQL窗口新特性(Window TVF)
理解Window TVF Window TVF使用
FlinkSQL窗口新特性(Window TVF)
|
Ubuntu Linux Docker
Docker安装和卸载
一:卸载旧版本 老版本的Docker被称为docker或docker-engine。如果安装了这些,请卸载它们以及相关的依赖项。 $ sudo yum remove docker \ docker-common \ docker-selinux \ docker-engine 如果yum报告说没有安装这些软件包,那么也行。
19915 0
|
5月前
|
消息中间件 缓存 算法
分布式开发:数字时代的高性能架构革命-为什么要用分布式?优雅草卓伊凡
分布式开发:数字时代的高性能架构革命-为什么要用分布式?优雅草卓伊凡
268 0
分布式开发:数字时代的高性能架构革命-为什么要用分布式?优雅草卓伊凡
|
Android开发
Flutter控件的显示与隐藏
Flutter控件的显示与隐藏
469 3
|
Android开发
Android中如何动态的调整Dialog的背景深暗
在Android开发中,Dialog和DialogFragment可通过设置`Window`的`backgroundDimAmount`来控制背景变暗,突出对话框。在DialogFragment的`onCreateDialog`或`onViewCreated`中,获取`Dialog`的`Window`,设置`LayoutParams.dimAmount`(例如0.5f)并添加`FLAG_DIM_BEHIND`标志。要动态调整,可保存`LayoutParams`并在需要时更新。对于Dialog,创建时直接设置同样属性。还可以通过定义主题样式设置背景模糊程度。
385 7
|
SQL API Android开发
展望2022:Android 开发最新技术动向
展望2022:Android 开发最新技术动向
562 0
展望2022:Android 开发最新技术动向
|
存储 数据可视化 数据挖掘
R语言绘制圈图、环形热图可视化基因组实战:展示基因数据比较
R语言绘制圈图、环形热图可视化基因组实战:展示基因数据比较
|
存储 编译器 Linux
【C++】float / double 与 0 值比较
使用普通的比较没有问题,如果考虑精度的话,需要与具体的值比较
1535 0
【C++】float / double 与 0 值比较
《QT从基础到进阶·十二》QPixmap.load加载图片不更新问题
《QT从基础到进阶·十二》QPixmap.load加载图片不更新问题
490 0
BXA
|
安全 算法 C++
深入理解C++智能指针
为了解决指针问题c++标准库提供了智能指针。智能指针是一个封装了指针的类,它可以自动释放指针,并避免了指针的生命周期问题。智能指针还可以保证指向的内存空间在不需要的时候被及时释放
BXA
431 0