什么是多态


  1. 同一个行为具有多个不同表现形式或形态的能力
  2. 同一个接口,使用不同的实例而执行不同重载

  • 好处

    1. 可替换
    2. 可扩充
    3. 消除类型之间的耦合性
    4. 灵活性
    5. 简化

  • 重载

    1. 什么是重载?

      1. 在一个类里面或一个子类,方法名相同,参数不同。(返回类型可以相同也可以不同)
      2. 每一个重载方法都必须有一个独一无二的参数类型列表。
      3. 最常用的地方就是构造器的重载。

    2. 重载的好处


    调用端(方法的使用者):在调用的时候,使用相同名字的方法实现不同的功能。


    1. 实现

    Public int test(){

    Sout("test1");

    Return 1;

    }


    Public void test(int a){

    Sout("test2")

    }


    Public String test(int a,String s){

    Sout("test3");

    Return "returntest3";

    }


    Public String test(String s ,int a){

    Sout("test4")

    Return "returntest4";

    }

    Pubic static viod main(String[] args){

    Overloading o = new Overloading();

            System.out.println(o.test());

            o.test(1);

            System.out.println(o.test(1,"test3"));

            System.out.println(o.test("test4",1))

    }


    1. 重写

      1. 什么是重写?

        1. 子类对父类允许访问的方法实现过程的重新编写。
        2. 返回值和参数类型都不能改变,既外壳不变,核心重写。

      2. 重写的好处

        1. 子类可以根据需要,定义特定自己的行为。

      3. 限制

        1. 构造方法不能重写
        2. 不能继承的类不能重写。
        3. 子类重写方法访问权限不能低于父类。
        4. final修饰的方法不能重写。
        5. static的方法不能重写,但是可以再声明。

      4. Super关键字


    当子类中调用父类的重写方法时,要使用super

    Calss Animal{

    Public void move(){
    sout("动物可以移动");

    }

    }

    Calss Dog extends Animal{

    Public void move(){

    Super.move();//应用super类的方法

    Sout("狗会可以跑");

    }

    }

    Public void TestDog{

    Public static void main(String args[]){

    Animal b = new Dog();

    b.move();

    }

    }


    1. 总结

      1. 重载是一个类多态的表现,重写是子类与父类的一种多态的表现。
      2. 重载是一个类中定义了多个方法名相同,而参数数量不同或数量相同类型不同和次序不同。




    重写与重载之间的区别



    区别点



    重载方法



    重写方法



    方法名



    必须相同



    必须相同



    参数列表



    必须修改



    不能修改



    返回类型



    可以修改



    不能修改



    异常



    可以修改



    可以减少或删除,一定不能抛出新的或者更广的异常



    访问



    可以修改



    不能做更严格的限制(可以降低限制)