关于java的多态

重载:方法名相同 返回类型和参数至少有一项不同(参数包括类型 和 数量)

 

重写:发生在子类 方法名 返回类型 参数都相同 只是把父类的此方法重新写而已

 

一直以来我对Facther f = new Son()这样的引用变量引用子类的实例都不是很懂。

 

还有就是向上向下转型

 

如:Animal animal = new Dog() // 引用变量引用了来自子类的实例

 

      Dog dog = (Dog)animal;     //将animal向下转型

 

      Creature creature = (Creature)animal //将animal向上转型

 


成员变量、静态变量, 静态方法按照引用变量声明的类型静态绑定;实例方法按照引用变量引用的实例动态绑定。  


例如,对于以下这段代码: 
Fathers f=new Sons(); 
System.out.println(“f.var=”+f.var); 
System.out.println(“f.staticVar=”+f.staticVar); 
f.method(); 
f.staticMethod(); 


运行时将会输出如下结果: 
f.var=FatherVar  // 成员变量按照引用变量(f)的声明的类型(Father)静态绑定
f.staticVar=StaticFaterVar  // 静态变量按照引用变量(f)的声明的类型(Father)静态绑定
Son method  // 实例方法按照引用变量(f)的引用的实例(new Sons())动态绑定
Static Father method  // 静态方法按照引用变量(f)的声明的类型(Father)静态绑定


class Fathers


String var="FatherVar"; 
static String staticVar="StaticFatherVar"; 
void method(){System.out.println("Father method");} 
static void staticMethod(){System.out.println("Static Father method");} 


class Sons extends Fathers


String var="SonVar"; 
static String staticVar="StaticSonVar"; 

void method(){System.out.println("Son method");} 
static void staticMethod(){System.out.println("Static Son method");} 

}

 

参考:http://hi.baidu.com/%CE%C4%D3%EA41/blog/item/9330b41f97375dcda68669e5.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值