JAVA多态

JAVA多态,第1张

  • 多态的概念

多态分为类的多态和方法的多态,类的多态就是一个类型可以有不同的表现形态,什么样的类型才会具备多态呢?只有被多个子类继承或者实现的父类才具备多态的特征,因为在运行期间可以根据具体的子类表现出不同的状态,类的多态的表现就是向上转型和向下转型。

方法的多态就是一个方法名称却有不同的实现,其实就是方法的重载,在调用方法的时候具体调用哪一-个是在运行期根据传递的实际参数的类型来确定调用哪一个方法,也就是同一个方法名称可以有不同的表现形式,这就是方法的多态。方法多态的表现就是方法的重载。

  • 多态的特点
  1. 多态的优点

 消除类型之间的耦合关系,可替换性,可扩充性,接口性,灵活性,简化性

  1. 多态存在的三个必要前提

继承

重写

父类引用指向子类对象

引用变量只能调用它编译类型的方法,不能调用它运行类型的方法。这时,我们就需要进行类型的强制转换!

一个父类的引用类型变量可以“指向”其子类的对象。

一个父类的引用不可以访问其子类对象新增加的成员(属性和方法)。

可以使用引用变量 instanceof 类名来判断该引用型变量所“指向”的对象是否属于该类或该类的子类。

子类的对象可以当作基类的对象来使用称作向上转型(upcasting),反之称为向下转型(downcasting)

当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法。

多态的好处:可以使程序有良好的扩展,并可以对所有类的对象进行通用处理。

  • 多态的例子

public class lizhi {

    public static void main(String[] args) {

      show(new wo());

      show(new bieren());

               

      human a = new wo();

      a.eat();

      wo c = (wo)a;

      c.work();

  } 

           

    public static void show(human a)  {

      a.eat(); 

        if (a instanceof wo)  {

            wo c = (wo)a; 

            c.work(); 

        } else if (a instanceof bieren) {

            bieren c = (bieren)a; 

            c.work(); 

        } 

    } 

}

class human { 

    public void eat(); 

class wo extends human { 

    public void eat() { 

        System.out.println("恰饭"); 

    } 

    public void work() { 

        System.out.println("摸鱼"); 

    } 

class bieren extends human { 

    public void eat() { 

        System.out.println("恰大饭"); 

    } 

    public void work() { 

        System.out.println("学习"); 

    } 

}

执行以上程序,输出结果是:

恰饭

摸鱼

恰大饭

学习

恰饭

摸鱼

  • 重写

子类能够重写父类的方法。

当子类对象调用重写的方法时,调用的是子类的方法,而不是父类中被重写的方法。

要想调用父类中被重写的方法,则必须使用关键字super

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/868330.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-13
下一篇 2022-05-13

发表评论

登录后才能评论

评论列表(0条)

保存