黑马程序员技术交流社区

标题: 黑马程序员-JAVA-面向对象-第八天 [打印本页]

作者: jing3133920    时间: 2015-5-3 00:59
标题: 黑马程序员-JAVA-面向对象-第八天
本帖最后由 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中的很多类都有可能会被复写。



作者: miss/U    时间: 2015-5-3 17:42
不错,很认真啊
作者: 支离疏者    时间: 2015-5-5 13:32
第七天呢~~~
作者: lixunwen    时间: 2015-5-5 14:00
不错!很认真!
作者: 石义良    时间: 2015-5-5 14:04
学习了....
作者: 逍遥才子121    时间: 2015-5-5 16:34
学习了。。。
作者: KK要有光    时间: 2015-5-5 17:55
很认真,看到吃骨头,就知道是看的毕老师的课。
作者: jing3133920    时间: 2015-5-5 21:53
支离疏者 发表于 2015-5-5 13:32
第七天呢~~~

第七天一直在审核中
作者: lshaizj    时间: 2015-5-5 21:55
学习了 赞一个
作者: 支离疏者    时间: 2015-5-6 10:26
jing3133920 发表于 2015-5-5 21:53
第七天一直在审核中

干脆重新发一篇吧!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2