首页 > 编程语言 > 详细

JAVA学习(多态)

时间:2021-03-28 22:12:07      阅读:25      评论:0      收藏:0      [点我收藏+]

一、多态

多态是同一个行为具有多个不同表现形式或形态的能力。

多态在代码中的体现:父类或者接口的引用指向其子类的对象。

 

特点:

1.成员变量:

编译时:参考引用型变量所属的类中是否有调用的成员变量,有,编译通过,没有则编译失败。

运行时:参考引用型变量所属的类中是否有调用的成员变量,并允许该所属类的成员变量

(编译,运行都看左边)

2.成员函数:

编译时:参考引用型变量所属的类中是否有调用的成员函数,有,编译通过,没有则编译失败。

运行时:参考的时对象所属的类中是否有调用的函数。

(编译看左边,运行看右边)

3.静态函数:

编译时:参考引用型变量所属的类中是否有调用的静态方法。

运行时:参考引用型变量所属的类中是否有调用的静态方法。

(编译和运行都看左边)

例如:

public abstract class Animal {
    abstract void eat();
}

public class Cat extends Animal{
    public void eat(){
        System.out.println("吃鱼");
    }
    public void catchMouse(){
        System.out.println("抓老鼠");
    }
}

public class Dog extends Animal{
    public void eat(){
        System.out.println("吃肉");
    }
    public void seeHome(){
        System.out.println("看家");
    }
}

public class DuoTaiDemo {
    public static void method(Animal a){
        a.eat();
    }

    public static void main(String[] args) {
        method(new Cat());   //Animal a = new Cat();
     // } }

多态的好处:提高了代码的扩展性,前期定义的代码可以使用后期的内容

多态的前提:

(1).类与类之间必须存在关联,继承或者实现关系

(2).要有覆盖关系。

 

2.转型

向上转型:

当使用Animal a = new Ca(); 时,猫的对象提升为动物类型,但是猫类的特有功能无法访问

其作用就是限制对特有功能的访问。也称为向上转型。

向下转型:

当需要使用猫类的特有功能时,需要进行向下转型

Cat c =  (Cat)a;

 

public class DuoTaiDemo {
    public static void method(Animal a){
        a.eat();
    }

    public static void main(String[] args) {
        method(new Cat());
        Animal a = new Cat();
        Cat c = (Cat)a;      //向下转型
        c.catchMouse();
    }
}

 可以再其中添加类型判断instanceof,用于判断是否输入某个类型

例如:

public static void method(Animal a){
        a.eat();
       if(a instanceof Cat){ //添加类型判断
          Cat c = (Cat)a;
          c.catchMouse();
       }
    }

 

JAVA学习(多态)

原文:https://www.cnblogs.com/gmangofight/p/14589322.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!