在java里面的向上转型和向下转型的具体好处在哪里?

如题所述

java里面的向上转型和向下转型的具体好处如下:

1.转型是在继承的基础上而言的,继承是面向对象语言中,代码复用的一种机制,通过继承,子类可以复用父类的功能,如果父类不能满足当前子类的需求,则子类可以重写父类中的方法来加以扩展。

2.向上转型:子类引用的对象转换为父类类型称为向上转型。通俗地说就是是将子类对象转为父类对象。此处父类对象可以是接口

向上转型时,父类指向子类引用对象会遗失除与父类对象共有的其他方法,也就是在转型过程中,子类的新有的方法都会遗失掉,在编译时,系统会提供找不到方法的错误。实例如下:

public class Animal {
         public void eat(){
                   System.out.println("animal eatting...");
         }
}
class Bird extends Animal{
         public void eat(){
                   System.out.println("bird eatting...");
         }
         public void fly(){
                   System.out.println("bird flying...");
         }
}
class Main{      
         public static void main(String[] args) {
                   Animal b=new Bird(); //向上转型
                   b.eat();
         b.fly();  //此处提示在Animal中没有定义fly方法。
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2015-02-07
向上转型是安全的 向下转型却不一定是安全的

向下转型成为强制类型转换 其意思是从父类转为子类 转了后你可以拥有更多的方法 因为子类通常有比父类更多的方法

向上转型称为抽象
给你举个例子
比如说一个工程 最后的main方法里面调用了其他地方的一个方法 该方法有一个参数 我假设方法的括号里为Person person 现在你要去调这个方法 你往里面传中国人 美国人 日本人 该方法都能跑起来 并且会通过多态调用不同的子类实现方法 但你如果不这样做 假设你把参数定为英国人 那你如果往里面传中国人 这个方法就跑不起来了 你就要去改代码 反之 你就不用改动任何代码追问

能举两个简单的例子吗?谢谢

追答

你应该知道Java里面的基本数据类型有int和long long的数据范围比int大 如果你定义了一个long类型的数据 语法是:long x=4; 你想把他转成int类型的数据 语法是:int a=(int)x; 这就是向下转型 也就是强制类型转换 上面的情况不会产生问题 但如果你定义的long类型数据太大了超过了int的最大范围就会出现问题了 所以向下转型不一定是安全的

向上转型的例子:你定义了一个方法 public void test(Object obj)
该方法形参写的是Object类型 所以你往里面扔任何对象类型都是可以的

向上转型:
看以下这种情况: public void test(String str)
该方法形参是字符串类型 所以你只能扔字符串

在C/S编程中 提供给客户端用户调用的方法 形参都用的是最上端的 也就是父类 因为如果一个类是子类 那么它肯定是父类
形参是父类的话 你往里面扔他的子孙也是可以运行的 会通过多态调用不同的实现

本回答被提问者采纳

Java向上转型和向下转型
Java中的向上转型和向下转型是两种不同的类型转换策略。向上转型是指将子类类型的对象赋值给父类类型的变量,这样做的好处是可以使用父类类型的引用调用子类的方法,但调用的是哪个具体子类的方法则取决于运行时的实际对象类型。例如:DEMO: 向上转型 尽管可以调用子类重写的方法,但不能直接使用父类类型的...

在java 中,什么叫向上转型
总结来说,向上转型是将子类赋值给父类引用,允许调用子类的方法,而向下转型则需要确保父类引用确实指向子类对象,否则可能会引发运行时异常。这种灵活性是Java面向对象编程中的重要特性,体现了抽象和多态的原理。

Java学习:向上转型和向下转型
在Java面向对象编程中,向上转型和向下转型是两个至关重要的概念。首先,向上转型涉及将子类的对象赋值给父类类型的变量。这个过程隐藏了子类特有的特性,允许我们仅使用父类中共享的方法。以下是一个简单的例子:当你有一个子类的对象,比如Dog(子类)并将其赋值给父类Animal(父类)的引用时,Dog的所...

java中向上转型和向下转型有何用途
得:上转型对象可以操作和使用子类继承或者重写的方法。失:上转型对象丧失了对子类新增成员变量或新增的方法的操作和使用。2与向上转型相反,即是把父类对象转为子类对象:作用也与上转相反。java 转型问题其实并不复杂,只要记住一句话:父类引用指向子类对象。子类和父类中定义同名的变量时,仅仅是隐藏...

Java向上转型和向下转型
向上转型实现语法:将子类对象赋值给父类变量。向下转型实现语法:将父类变量强制转换为子类类型。向下转型风险:存在类型转换异常风险。使用示例需先进行向上转型。可通过instanceof关键字避免异常。向下转型用处有限,了解其概念及异常处理即可。日常编程中无需过度依赖向下转型。学习过程中,推荐查找电子书系统...

java向下转型和向下转型是怎么一回事?请高人指点一下,谢谢!!
(1)向下转型概述继承可以确保所有的子类类具有基类的接口,且绝对不会少。那么子类除了有父类的方法,也可以有自己的额外的新方法(这些方法是基类所没有的),那么一旦向上转型,就不能调用子类中的新方法,那么能不能用一种方式调用这些新方法呢?当然有了,这时候就需要向下转型。(2)向下转型将...

java 向上转型 向下转型
向上转型更多的用来体现一种编程上的“约定”。所有继承某个类或者实现某个接口的类,一定包含某个方法,这样在调用的时候,使得你也不必关系具体的实现细节,只要知道“这个类型中的某个方法能帮我完成工作”就可以了。3.向下转型,是“引用的类型”的变化,不是对象实例类型的变化。new什么,就是什么...

求教个关于java继承的问题
一、向上转型与向下转型。对象类型的转换在Java语言平台中经常遇到,主要包 括向上转型与向下转型操作。程序开发人员需要熟练掌握这两个转型的方法以及其中容易出错的地方。如何来了解这两个转型的区别呢?笔者认为,以一个现实的例 子作为比喻,可能会更加的容易理解。如现在有动物、鸟类、燕子三个名词,...

在java 中,什么叫向上转型
2。把子类对象直接赋给父类引用叫upcasting向上转型,向上转型不用强制转换。如:Father f1 = new Son();3。把指向子类对象的父类引用赋给子类引用叫向下转型(downcasting),要强制转换。如:f1 就是一个指向子类对象的父类引用。把f1赋给子类引用s1即 Son s1 = (Son)f1;其中f1前面的(Son)必须...

问下向下转型作用
第一,在object父辈继承得来的equals方法,不能完成年龄和体重对比的要求,故要重写 第二,对象那里找呢?子类自身可以new出一个来,剩下的那个只能通过向下转型,把爹变成儿子 呵呵,为了保证变出来的是儿子类的,在变之前就需要采用 { 出来的对象名称 intanceof 子类名称 } 筛选一下,这样就...

相似回答