关于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

阅读更多
文章标签: java string class c
个人分类: java
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭