29、创建子类,打印子类变量,再向上转型为父类,再打印一下子类变量
import static java.lang.System.*;
public class Test
{
public static void main(String[] args)
{
System.out.println(((One)Two).name);
}
}
class One
{
public static String name = "我是你爹";
}
class Two extends One
{
public static String name = "牛逼";
}
报错如下
所以向上转型只能是实例之间的,类之间并不行这样。
而实例之间,向上转型之后,打印的类变量和实例变量都会变成父类的,
import static java.lang.System.*;
public class Test
{
public static void main(String[] args)
{
Two two = new Two();
System.out.println(two.name);
}
}
class One
{
public static String name = "我是你爹";
}
class Two extends One
{
public static String name = "牛逼";
}
向下转型是用在,已经是多态的引用变量上的,父类的正常实例是无法向下转型的。虽然编译不会有错误,但是运行会报错
import static java.lang.System.*;
public class Test
{
public static void main(String[] args)
{
One one =new Two();
Two two =(Two) one;
System.out.println(two.name);
}
}
class One
{
public String name = "我是你爹";
}
class Two extends One
{
public String name = "牛逼";
}



