在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方法。
}
展开全部
向上转型是安全的 向下转型却不一定是安全的
向下转型成为强制类型转换 其意思是从父类转为子类 转了后你可以拥有更多的方法 因为子类通常有比父类更多的方法
向上转型称为抽象
给你举个例子
比如说一个工程 最后的main方法里面调用了其他地方的一个方法 该方法有一个参数 我假设方法的括号里为Person person 现在你要去调这个方法 你往里面传中国人 美国人 日本人 该方法都能跑起来 并且会通过多态调用不同的子类实现方法 但你如果不这样做 假设你把参数定为英国人 那你如果往里面传中国人 这个方法就跑不起来了 你就要去改代码 反之 你就不用改动任何代码
向下转型成为强制类型转换 其意思是从父类转为子类 转了后你可以拥有更多的方法 因为子类通常有比父类更多的方法
向上转型称为抽象
给你举个例子
比如说一个工程 最后的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编程中 提供给客户端用户调用的方法 形参都用的是最上端的 也就是父类 因为如果一个类是子类 那么它肯定是父类
形参是父类的话 你往里面扔他的子孙也是可以运行的 会通过多态调用不同的实现
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询