class classA{
public void printv(){
System.out.println("classA");
}
}
class classB extends classA{
public void printv(){
System.out.println("classB");
}
}
public class Testtwo {
public static void main(String args[]){
classB objectB=new classB();
objectB.printv();
classA as=(classA)objectB;
as.printv();
}
}
////////////////
不理解为什么强制类型转换了classA as=(classA)objectB;输出的还是classB呢?多态类
public void printv(){
System.out.println("classA");
}
}
class classB extends classA{
public void printv(){
System.out.println("classB");
}
}
public class Testtwo {
public static void main(String args[]){
classB objectB=new classB();
objectB.printv();
classA as=(classA)objectB;
as.printv();
}
}
////////////////
不理解为什么强制类型转换了classA as=(classA)objectB;输出的还是classB呢?多态类
专业的说这个叫做override
classA as=(classA)objectB;既然ClassB就ClassA的子类,那么可以隐式类型转换,不用显式类型转换吧,直接写成:
classA as=objectB;
就是as对象指向了objectB,都是同一个对象,当然调用哪个方法时还是ClassB的方法。
这不是向上转型吗?其实你不用强制转换,JVM也会帮你做的!