Java——的向上转型和向下转型

2019年2月16日09:49:13 发表评论 1,348 views

在这里 要 着重 讲解 两个 概念, 希望 读者 予以 重视。 1. 向上 转型 在上 面的 范例 TestJavaDemo1. Java 中, 父 类 对象 通过 子类 对象 去 实例 化, 实际上 就是 对象 的 向上 转型。 向上 转型 是 不需要 进行 强制 类型 转换 的, 但是 向上 转型 会 丢失 精度。 2. 向下 转型 与 向上 转型 对应 的 一个 概念 就是“ 向下 转型”, 所谓 向下 转型, 也就是说 父 类 的 对象 可以 转换 为 子类 对象, 但是 需要 注意 的 是, 这时 则 必须 要 进行 强制 的 类型 转换。 读者 可能 觉得 上面 的 两个 概念 有些 难以 理解, 下面 举个 例子 来 帮助 读者 理解。

/**
 * Created by xabcd on 2019/2/16.
 */
public class Java_shilihua {
    public void fun1() {
        System.out.println("1.Oerson{fun1()}");
    }

    public void fun2() {
        System.out.println("2.Oerson{fun2()}");

    }
}
    //Student类拓展自Person类,也就继承了Person类中的fun1()、fun2()方法
    class Student3 extends Java_shilihua
    {
        //在这里覆写Person类中的fun1()方法
        public void fun1()
        {
            System.out.println("3.Oerson{fun1()}");
        }
        public void fun3()
        {
            System.out.println("4.Oerson{fun3()}");
        }
    }






/**
 * Created by xabcd on 2019/2/16.
 */
public class Testshilihua
{
    public static void main(String[] args)
    {
        //此处,父类对象由子类实例化
//        Java_shilihua p = new Java_shilihua();
        //改成下面这句,相当于是由子类去实例化父类对象
        Java_shilihua p = new Student3();
//        将p对象向下转型
        Student3 s = (Student3)p;
        p.fun1();
        p.fun2();
    }
}
/**
 * Created by xabcd on 2019/2/16.
 */
public class Testshilihua
{
    public static void main(String[] args)
    {
        //此处,父类对象由子类实例化
//        Java_shilihua p = new Java_shilihua();
        //改成下面这句,相当于是由子类去实例化父类对象
        Java_shilihua p = new Student3();
//        将p对象向下转型
        Student3 s = (Student3)p;
        p.fun1();
        p.fun2();
    }
}

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: