您的位置:首页 > 编程语言 > Java开发

java面向对象、多态

2014-12-11 14:53 218 查看

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

                                                         多态

(一)、多态优缺点:  

     1),函数本身就具备多态性,某一种事物有不同的具体的体现。
     2),父类引用或者接口的引用指向了自己的子类对象。
     3),提高了程序的扩展性。
     4),当父类引用指向子类对象时,虽然提高了扩展性,但是只能访问父类中具备的方法,不可以访问子类中特有的方法。(前期不能使用后期产生的功能,即访问的局限性)
     5),必须要有关系,比如继承、或者实现。通常会有覆盖操作。   
格式:<对象 instanceof 类型> ,判断一个对象是否所属于指定的类型。Student instanceof Person = true;//student继承了person类实例: class 父亲{
void 讲课(){
System.out.println("企业管理");
}
void 钓鱼(){
System.out.println("钓鱼");
}
}
class 儿子 extends 父亲{
void 讲课(){
System.out.println("JAVA");
}
void 看电影(){
System.out.println("看电影");
}
}
class {
public static void main(String[] args) {
父亲 x = new 儿子(); //儿子对象被提升为了父亲类型。
// x.讲课();
// x.看电影(); //错误.
父亲 y = (儿子)x; //将父亲类型强制转换成儿子类型。
y.看电影();//在多态中,自始自终都是子类对象在做着类型的变化。
}
}

(二)、多态在子父类中的成员上的体现特点:

      1),成员变量: 编译时期参考的是引用型变量所属的类中是否有调用的成员,(编译时不产生对象,只检查语法错误)    运行时期也是参考引用型变量所属的类中是否有调用的成员。     
      2),成员函数: 编译时期参考引用型变量所属的类中是否有调用的方法,  运行事情参考的是对象所属的类中是否有调用的方法。
      3),静态函数: 编译时期参考的是引用型变量所属的类中是否有调用的成员, 运行时期也是参考引用型变量所属的类中是否有调用的成员。

(三)、Object介绍:

     1),所有类的直接或者间接继承父类,Java认为所有的对象都具备一些基本的共性内容,这些内容可以不断的向上抽取,最终就抽取到了一个最顶层的类中的,该类中定义的就是所有对象都具备的功能。
     2),具体方法:
boolean equals(Object obj):用于比较两个对象是否相等,其实内部比较的就是两个对象地址。而根据对象的属性不同,判断对象是否相同的具体内容也不一样。所以在定义类时,一般都会复写equals方法,建立本类特有的判断对象是否相同的依据。
public boolean equals(Object obj){
if(!(obj instanceof Person))
return false;
Person p = (Person)obj;
return this.age == p.age;
}     3),String toString():将对象变成字符串;默认返回的格式:类名@哈希值 = getClass().getName() + '@' + Integer.toHexString(hashCode())为了对象对应的字符串内容有意义,可以通过复写,建立该类对象自己特有的字符串表 形式。 
public String toString()
{

return "person : "+age;

}     4),Class getClass():获取任意对象运行时的所属字节码文件对象。 
     5),int hashCode():返回该对象的哈希码值。支持此方法是为了提高哈希表的性能。 
总结:通常equals,toString,hashCode,在应用中都会被复写,建立具体对象的特有的内容。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java