前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java基础知识(四)--多态

Java基础知识(四)--多态

作者头像
用户7386338
发布2021-05-13 11:34:01
2180
发布2021-05-13 11:34:01
举报
文章被收录于专栏:Java患者Java患者

多态

什么是多态

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

多态的前提

  • 要有继承/实现关系
  • 要有方法重写
  • 要有父类引用指向子类对象

多态的成员特点

  • Animal a = new Dog();

当代码这个样子的时候,(也就是说当编译类型和运行类型不同)多态就产生了.对象a具有两种类型

编译类型: 声明对象变量的类型,Animal,表示把对象看成什么类型

运行类型:对象的真实类型,Dog

多态中的成员访问特点之成员变量

  • 编译看左边,运行看左边

多态中的成员访问特点之成员方法

  • 编译看左边,运行看右边

多态中的成员访问特点之静态成员方法

  • 编译看左边,运行看左边
  • 静态和类相关,算不上重写,所以,访问还是左边的
  • 只有非静态的成员方法,编译看左边,运行看右边

案例

代码语言:javascript
复制
public class Fu {
    int num = 5;
    static void method1(){
        System.out.println("fu类中的method1");
    }
    void method2(){
        System.out.println("fu类中的method2");
    }
}

代码语言:javascript
复制
public class Zi  extends Fu{
    int num = 8 ;
    static void method1(){
        System.out.println("zi method1");
    }
    void method2(){
        System.out.println("zi method2");
    }
}
代码语言:javascript
复制
public class DuoTaiDemo {
    public static void main(String[] args){
        Fu f = new Zi();
        System.out.println(f.num);//5,与父类一致
        f.method1();//fu类中的method1,与父类一致
        f.method2();//zi method2,编译时与父类一致,运行时与子类一致
        Zi z = new Zi();
        System.out.println(z.num);//8,与zi类中的method一致
        z.method1();//zi method1
        z.method2();//zi method2
    }
}
代码语言:javascript
复制
5
fu类中的method1
zi method2
8
zi method1
zi method2

多态的好处和弊端

  • 提高了代码的维护性(继承保证)
  • 提高了代码的扩展性(多态保证)
  • 不能使用子类特有的属性和行为(弊端)
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-04-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java患者 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 多态
    • 什么是多态
      • 多态的前提
        • 多态的成员特点
          • 多态中的成员访问特点之成员变量
            • 多态中的成员访问特点之成员方法
              • 多态中的成员访问特点之静态成员方法
                • 案例
                  • 多态的好处和弊端
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档