java多态性部分
时间:2014-04-06 22:18 来源: 我爱IT技术网 作者:微风
java多态性部分:
从例子分析:
public class Base
{
public int book =6;
public voidbase(){
System.out.println("base'sbase");
}
public voidtest(){
System.out.println("base'stest");
}
}
public class Subextends Base
{
public String book= "sub's book";
public void sub(){
System.out.println("sub'ssub");
}
public void test(){
System.out.println("sub'stest");
}
public static voidmain(String[] args){
Base base = newBase();
System.out.println(base.book);// 6
base.base(); //base's base
base.test(); //base's test
Sub sub = newSub();
System.out.println(sub.book);// sub's book
sub.sub(); //sub's sup
sub.test(); //sub's test
sub.base(); //base's base
Base b = newSub(); // 向上转型(upcasting),java系统自动完成的
System.out.println(b.book);// 6
b.test(); // sub'stest
b.base(); //base's base
// b.sub(); //不能执行
}
}
多态的意思,从例子知道base,b都是Base类型,但b.test()方法与base.test()方法有着不同行为,从此引出一个现象,相同的类型对象的相同的方法却有不同的行为,这种现象称之为多态。
多态产生,源于向上转型,将子类实例直接赋值给父类类型的变量,假如该子类重写了父类的方法,则父类类型变量的该方法将会采用子类重写的那个方法。如上面例子,b的test()方法采用Sub类型的test()方法,而对于变量,则无影响,依旧采用父类的那一套变量。而且父类类型的变量的方法依旧为父类中定义的方法,不会将子类新增的方法迁移到其身上,所以例子中b是没有Sub中新增的sub方法的。
本文来源 我爱IT技术网 http://www.52ij.com/jishu/4793.html 转载请保留链接。
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
