在这里 要 着重 讲解 两个 概念, 希望 读者 予以 重视。 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();
}
}
