java中的所谓的向上转型

来源:互联网 发布:淘宝ifashion店铺 编辑:程序博客网 时间:2024/05/11 21:55

搬家后的博客链接: IT客栈 www.itkezhan.org


     java中的所谓的向上转型,目前的理解是。子类基本上转化为父类,唯一不同于父类的是,这个子类在调用父类方法的时候,如果原来子类中覆写了父类的方法,则转型后的子类会调用这个覆写的方法,而不会调用父类中那个被它覆写的方法。




例子:


    class f{
public int book = 6;

public void base()
{
System.out.println("父类的普通方法");
}


public void test()
{
System.out.println("父类的被覆盖方法");
}
}






class c extends f{
public String book="java实例开发";
public void test()
{
System.out.println("子类的覆盖方法");
}

public void sub()
{
System.out.println("子类的普通方法");
}

}


public class test{
public static void main(String[] args)
{



f d = new c();   //向上转型

System.out.println(d.book);   //这时候调用的是父类的属性,输出的是 6
d.base(); //调用了父类的方法,打印出了     “父类的普通方法”
d.test(); //由于test这个方法在子类(c)中被覆写,所以这个时候调用的是子类中的 test 方法;
//d.sub();    //子类向上转型了之后,基本上跟父类差不多,所以不能直接调用父类之外方法。由于这个sub不是属于父类,所以如果运行这句,编译会出错
}





}




总结:向上转型后的子类实例=父类实例的属性 + 父类实例没有被覆写的方法 + 子类覆写的方法。

原创粉丝点击