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

本帖最后由 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
第七天一直在审核中

干脆重新发一篇吧!
回复 使用道具 举报
学习了 赞一个
回复 使用道具 举报

第七天一直在审核中
回复 使用道具 举报
很认真,看到吃骨头,就知道是看的毕老师的课。
回复 使用道具 举报
学习了。。。
回复 使用道具 举报
学习了....
回复 使用道具 举报
不错!很认真!
回复 使用道具 举报
第七天呢~~~
回复 使用道具 举报
不错,很认真啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马