黑马程序员_java多态机制

来源:互联网 发布:159女儿村输出数据 编辑:程序博客网 时间:2024/05/19 09:11

黑马程序员_java多态机制

-----android培训、java培训、期待与您交流!-----

java面向对象的三大基本特性分别是,封装,继承,多态。其中的多态机制可以说是其中最强大的机制。方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。

如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写(Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloading的方法是可以改变返回值的类型。

请往下面看一个方法重载的例子
    public class Animal{//

         public void show(){

                System.out.println("itheima");

         }

}

class Cat extends Animal{

         public void show(String name){

                   System.out.println(name);

     }

}

/*

父类中已经有了一个show方法,我在子类里面也定义了一个show方法但是参数和父类不一样。
   Cat s=new Cat(); 

s.show();//调用的是父类中的方法

s.show("黑马程序员");//调用的是子类自己的show方法

重载方法的概念就是在一个作用域中出现同名不同参的方法,即称为方法的重载。在调用重载的方法时根据传递的参数来调用相应的方法,这就被称为java的静态多态性。因为在编译时系统就能决定要调用哪个函数

*/

-----------------------------------------------

请往下面看一个方法重写(覆盖)的例子:

public class Animal{

        public void show(){
                      System.out.println("父类"); 

        }

}

class Cat extends Animal{

        public void show(){

               System.out.println("子类");

        }

}

上面这段代码中。父类已经有了一个show方法。子类还定义了一个同名同参的方法,这就被称为方法的重写也可以叫覆盖。

重写父类方法时需要特别注意两点。

1.子类中重写的方法要和父类中被重写的方法一致,如:父类中这个方法的返回值为String,子类重写这个方法时如果返回值不是String就会报错。

2.子类中重写的方法的访问权限要等于或大于父类中被重写方法的。否则编译也不会通过


----参阅上面程序的例子来看我下面的这段代码-----

Animal a=new Cat();//父类的引用指向子类的对象

a.show();//在这里调用子类中的这个show方法

1.在编译期间:参阅引用型变量所属的类中是否有调用的方法。(假设父类中没有show方法编译时就会报错)

2.在运行期间:调用的却是实际对象所属类中的方法。

这就是java的动态多态性,动态多态性是指在运行中才能动态确定操作指针所指的对象。

动态多态性的前提就是

1.类与类之间得有继承关系

2.子类得重写父类的方法

3.父类引用要指向想子类对象

-----小弟不才,高手请飞过-----

-----希望本博文能对新手有一点用-------

原创粉丝点击