A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 jing3133920 于 2015-5-3 21:43 编辑

一、多态多态可以理解为事物存在的多种体现形态。
1.多态的体现:
父类的引用指向了自己的子类对象
父类的引用也可以接收自己的子类对象
2.多态的前提:
必须是类与类之间有关系,要么继承,要么实现。
通常还有一个前提:存在覆盖。
3.多态的好处:
多态的出现大大的提高程序的扩展性。
4.多态的弊端:
但是只能使用父类的引用访问父类中的成员。
5.多态的应用:
可以对多个类实物进行抽取。导致了多态的产生,操作同一个大类型,并对大类型中的所有小类型都能进行操作。
6.多态的成员非静态函数特点:
在编译时期,参阅引用型变量所属的类中是否有调用的方法。如果有,编译通过,如果没有编译失败。
在运行时期,参阅对象所属的类中是否有调用的方法。
简单总结:成员函数在多态调用时,编译看左边,运行看右边。
7.多态的成员静态函数特点:
无论编译还是运行,都参考左边
8.多态的成员变量特点:
无论编译还是运行,都参考左边(引用型变量所属的类)。

例:
abstract class Animal
{
      abstract void eat();
}
class Cat extends Animal
{
   public void eat()
   {
      system.out.println("吃鱼");
   }
   public void catchMouse()
   {
        system.out.println("抓老鼠");
   }
}
class Dog extends Animal
{
   public void eat()
   {
      system.out.println("吃骨头");
   }
   public void kanJia()
   {
        system.out.println("看家");
   }
}

class DuoTaiDemo
{
    public static void main(String[] args)
    {
             function(new Cat());
             function(new Dog());
    }
    public static void function(Animal a)\\当参数传进来相当于 Animal a = new Cat();
    {
          a.eat();\\在这个方法中不能调用Cat和Dog类中特有的方法。因为只能使用父类的引用访问父类中的成员。
    }
}
多态的转型:
Animal a = new cat(); 类型提升。向上转型。
如果想要调用猫的特有方法,该如何?
强制将父类的引用,转成子类类型。
Cat c=(Cat)a;\\这叫向下转型
介绍一个关键字:instanceof,判断某一类型引用,指向的对象到底符合什么类型。
注:
千万不要出现这样的操作,就是将父类对象转成子类类型。我们能转换的是父类应用指向了自己的子类对象时,该应用可以被提升,也可以被强制转换。
多态自始至终都是子类对象在做着变化。

二、Object类
它是所有对象的直接或者间接父类。该类中定义的肯定是所有对象都具备的功能。
Object类中已经提供了比较相同的功能equals方法:它是通过比较地址来完成两个对象是否相同。
如果想要自定义一个比较功能,可以沿袭父类中的功能。也就是覆盖。
例:
public boolean equals(Object obj)
{
   Demo d = (Demo)obj;\\Demo是一个子类,因为想要使用子类中的num变量所以对它进行向下转型。
   return this.num == d.num;
}
toString方法:它就是由getClass().getName()+'@'+Integer.toHexString(hashCode())组成的。hashCode获取哈希码值。
每个对象都有自己的字符串表现形式。java中的很多类都有可能会被复写。


9 个回复

倒序浏览
不错,很认真啊
回复 使用道具 举报
第七天呢~~~
回复 使用道具 举报
不错!很认真!
回复 使用道具 举报
学习了....
回复 使用道具 举报
学习了。。。
回复 使用道具 举报
很认真,看到吃骨头,就知道是看的毕老师的课。
回复 使用道具 举报

第七天一直在审核中
回复 使用道具 举报
学习了 赞一个
回复 使用道具 举报
jing3133920 发表于 2015-5-5 21:53
第七天一直在审核中

干脆重新发一篇吧!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马