Java语言允许某个类型的引用变量引用子类的实例,而且可以对这个引用变量进行类型转换。Java中引用类型之间的类型转换(前提是两个类是直接或间接的父子关系)主要有两种,分别是向上转型(upcasting)和向下转型(downcasting)。我们先来看下面这张图:猫、狗、牛、羊都是动物,所以”动物“是父类,猫狗牛羊是具体的子类。
向上转型是用来表现新类和基类之间的关系。在传统中,由导出类转型成基类,在继承图中是向上移动的。因此称作向上转型。由于向上转型是从一个较专用类型向较通用类型转换,所以总是安全的。也就是说,导出类是基类的一个超集。它可能比基类含有更多的方法。但他必须具备基类中所含有的方法。 我们来看一个例子。 csha...
实际上draw(Shape s)方法可以对所有Shape类的导出类使用,这被称为向上转型。表现的行为,和方法所属的类别一致。换句话说,由于明确指出是父类Shape的方法,那么其行为必然是这个方法对应的行为,没有任何歧义可言。 “向上转型”的命名来自于类继承图的画法:根置于顶端,然后逐渐向下,以本例中两个类为例,如下图所示...
但是向下转型会存在风险,存在类型转换异常的风险。 二:向下转型 简单的说向上转型就是:将一个父类类型的变量强制转换为子类类型。具体的实现语法: DEMO:向下转型 发现了实现向下转型必须先向,上转型,但是向下转型作用不大,只是作为知识点提出,向下转型还存在类型转换异常的风险。 向下转型用得不多,你知道这个概念就...
通过向上转型,我们可以实现更通用且灵活的代码,提高程序的可扩展性和可维护性。 向下转型(Downcasting) 向下转型是指将父类对象转换为子类对象的过程。这种转型是显式进行的,即通常需要使用强制类型转换操作符。向下转型具有以下特点: 必须确保父类对象的真实类型是子类类型,否则会在运行时抛出ClassCastException异常。
向下转型 为了保证向下转型的顺利完成,在java中提供了一个关键字:instanceof,通过instanceof可以判断某对象是否是某类的实例,如果是则返回true,否则为false,instanceof使用如下: 代码语言:javascript 复制 Aa=newB();//向上转型 (B类是A的子类)ainstanceofA;//返回true.ainstanceofB;//返回trueainstanceofC;//...
向下转型: 通过父类对象(大范围)实例化子类对象(小范围),这种属于强制转换 1. 向上转型 示例1-向上转型 class A { public void print() { System.out.println("A:print"); } } class B extends A { public void print() { System.out.println("B:print"); ...
首先是说到了向上转型,介绍了它会出现的三种场景,也分析了它的优缺点,知道了在向下转型之后无法调用子类特有的方法 但是在向下转型中,我们解决了这个问题,通过对父类对象进行一个强转,就可以调用到子类当中的方法,不过可以看到这种做法不太安全,若是一开始父类对象接受了一个子类的引用,但是在强转的时候转化为了另...
向上转型:可以看出把Cat()的对象赋值给naimal时,不再有用getEyes()方法,此方法是Cat中的方法,而Animal类中无此方法。这说明animl对象发生了“瘦身”。向下转型:这里要注意一点,向下转型是你向上转型后才能执行的操作。所以把转型后的animal赋值给cat_s,此时却发现cat_s对象“增肥”了,不仅能访问Animal类...
父子对象之间的转换分为了向上转型和向下转型,它们区别如下: 向上转型: 通过子类对象(小范围)实例化父类对象(大范围),这种属于自动转换 向下转型: 通过父类对象(大范围)实例化子类对象(小范围),这种属于强制转换 1. 向上转型 示例1-向上转型 classA {publicvoidprint() { ...