码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • java基础之面向对象多态性[24]


    java基础之面向对象多态性[24]


    文章目录

    • java基础之面向对象多态性[24]
    • 一、什么是多态性?
    • 二、instanceof关键字
    • 三.代码演示
      • 1.抽象类
      • 2.两个抽象类实现
      • 3.类内部定义一个静态方法
      • 4.创建对象,实现代码
    • 四.多态小结
    • 五.小结



    一、什么是多态性?

    多态性:对象在运行过程中的多种形态.面向对象三大特性之一,是抽象编程思维精髓所在,用抽象思维写代码,在运行过程中传入具体对象,同面向接口编程如出一辙.

    多态可分为两类:

    1.方法的重载和重写.
    2.对象的多态性.

    例如:使用父类引用指向子类对象(用大的类型去接受小的类型,向上转型,自动转换);父类通常都定义为抽象类或接口.

    二、instanceof关键字

    用于检查对象是否为指定的类型,通常把父类引用强制转换成子类引用时使用,以避免发生转换异常.
    格式:对象名 instanceof 转换类型:返回布尔值,是为true,否为false
    一般用于判断一个对象是否是某个类的实例.

    三.代码演示

    1.抽象类

    abstract class Dog{
       private String name;
       private int age;
       public Dog(){};
       public Dog(String name,int age){
           this.name=name;
           this.age=age;
       }
       public abstract void eat();
       public String getName() {
           return name;
       }
    
       public void setName(String name) {
           this.name = name;
       }
    
       public int getAge() {
           return age;
       }
    
       public void setAge(int age) {
           this.age = age;
       }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    2.两个抽象类实现

      class HasykDog extends Dog{
        public HasykDog(String name,int age){
            super(name,age);
        }
        @Override
        public void eat() {
            System.out.println("我是:"+this.getName()+" 吃饭"+" 年龄:"+this.getAge());
        }
    }
    
    class HomeDog extends Dog{
        public HomeDog(String name,int age){
            super(name,age);
        }
        @Override
        public void eat() {
            System.out.println("我是:"+this.getName()+" 吃饭"+" 年龄:"+this.getAge());
        }
        public void sleep(){
            System.out.println("我爱睡觉!");
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    3.类内部定义一个静态方法

     public static void run(Dog d){
    	System.out.println("跑步");
    	     if (d instanceof HomeDog){
    	         ((HomeDog) d).sleep();
    	     }
     }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    4.创建对象,实现代码

    HomeDog hd=new HomeDog("佳佳",1);
    Dog hk=new HasykDog("哈士奇",2);
     hd.eat();
     hd.sleep();
     run(hd);
     hk.eat();
     run(hk);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    四.多态小结

    1.方法的重载和重写.
    2.多个子类就是父类中的多种形态.
    3.父类引用可以指向子类对象,自动转换.
    4.子类对象指向父类引用需要强制转换(类型不对会报异常);
    5.在实际开发中尽量使用父类引用(更利于扩展);

    五.小结

    本章概述了java基础中面向对象的多态性,多态是面向对象编程的灵魂,掌握了多态才能算掌握面向对象的精髓,所以本章为重点;
    有哪里不足或者有更好的建议,欢迎留言吐槽,有哪里不懂的小伙伴,可以私信我,我会一一答复,感谢认可,感谢支持!

  • 相关阅读:
    在IDEA创建文件模板——以创建MyBatis的mapper.xml文件模板为例
    C语言实现输入一行字符统计其中有多少个单词,单词之间用空格分隔开
    自主研究,开发并产业化的一套UWB精确定位系统源码 UWB源码
    元分析 | 大脑同伦共激活的性别差异
    PC_多模块存储器
    猿创征文|【开发工具-我打辅助的】2022软件开发常用辅助工具
    python毕业设计作品基于django框架 多用户商城平台系统毕设成品(7)中期检查报告
    TCP三次握手和四次挥手基本知识
    第1章 打造深度学习工具箱
    Vue计算属性与监视属性
  • 原文地址:https://blog.csdn.net/weixin_45539338/article/details/126528688
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号