首页 > 编程语言 >一个月学会Java 第11天 面向对象——多态

一个月学会Java 第11天 面向对象——多态

时间:2024-10-13 10:53:14浏览次数:9  
标签:11 Java 子类 void Father 多态 父类 public

Day11 面向对象——多态

我们来复习一下面向对象的三大特性分别是什么,面向对象拥有的三大特性分别为
继承、封装、多态。继承我们也已经学过了,就是父类和子类、封装其实也学过了其实就是访问修饰符和包,主要的作用为更好的封装

我们接下来要讲的多态则是面向对象的最难点,他要基于继承进行的

第一章 多态基础——动态绑定机制

首先我们想要知道多态要怎么实现,多态的实现其实也非常的简单,只需要满足三个条件即可,第一个就是 有继承关系,第二个就是有重写的方法,第三个就是
父类引用指向子类对象,我知道你们突然懵了,但你们先别急,我来解释解释

首先我们来说说什么是父类引用指向子类对象,那么我们先来看看正常的对象什么,因为及时有继承我们也是使用子类进行创建对象的嘛

Hello hello = new Hello();
这个就是正常的对象创建对吧,但是我们现在来一点条件,比如现在有一个父类叫做Father然后我们的Hello类就继承这个Father,那我们现在创建的hello对象里面是不是有身为父类的Father里面的方法。

那我们现在换一个操作来声明,然后我们再确定一下,Hello是子类对吧,然后Father是父类,Hello extends Father。
我们就可以这么写就可以达成父类引用指向子类对象 Father hello = new Hello()
大家也可以自己使用之前的代码进行尝试一下,编译是不会出现问题的,但是会出现一个问题,就是你没有进行重写的时候想要调用子类中的方法是不可能的,我们来举个栗子

public class Hello extends Father {
    public static void main(String[] args) {
        Father hello = new Hello();
        hello.p();
    }

    public void p1() {
        System.out.println("我是子类中的方法p1()");
    }
}

class Father {
    public void p() {
        System.out.println("我是父类中的方法p()");
    }
}

在这里插入图片描述

我们明显可以看到这里报错了,自然是运行不了的,我们来看看问题出在哪里,还记得我说的吗,想要完成多态就要经历三个,一个是 继承,一个是
重写,还有一个就是 父类引用指向子类对象,1和3条件都有了但是没有重写,所以没有完成多态,我们继续编写一下代码,让他拥有重写,然后就会形成多态

public class Hello extends Father {
    public static void main(String[] args) {
        Father hello = new Hello();
        hello.p();
    }

    public void p() {
        System.out.println("我是子类中的方法p()");
    }
}

class Father {
    public void p() {
        System.out.println("我是父类中的方法p()");
    }
}

在这里插入图片描述

是不是就调用了重写之后的方法,这里就要讲到多态的一个特性了,首先我们需要重写,重写完了之后呢,我们需要在父类中使用一个方法调用这个被重写的方法完成真正的多态

public class Hello extends Father {
    public static void main(String[] args) {
        System.out.println("首先声明,现在是使用p2的情况");
        Father hello = new Hello();
        hello.p2();
    }

    public void p() {
        System.out.println("我是子类中的方法p()");
    }
}

class Father {
    public void p() {
        System.out.println("我是父类中的方法p()");
    }

    public void p2() {
        p();
    }
}

在这里插入图片描述

看到区别了吧,我们使用p2,然后p2调用了p,但这个时候的p并不是父类方法里面的p,而是子类里面的p,这个就是多态,神不神奇

标签:11,Java,子类,void,Father,多态,父类,public
From: https://blog.csdn.net/XingZaiUnrivaled/article/details/142871217

相关文章

  • 基于springboot的水果商城系统的设计与实现java+vue(源码+lw+部署文档+讲解等)
    背景及意义该校园水果自动售卖系统基于SpringBoot+Vue技术构建,旨在为四川旅游学院的师生提供便捷、高效的水果购买服务。对于学生和教师而言,系统提供了直观友好的用户界面。通过手机或校内的终端设备,用户可以轻松访问系统。在界面上,用户能够清晰地看到各类水果的展......
  • javascript学习——算术运算符
    算术运算符运算符是处理数据的基本方法,用来从现有的值得到新的值。JavaScript提供了多种运算符,覆盖了所有主要的运算。概述JavaScript共提供10个算术运算符,用来完成基本的算术运算。加法运算符:x+y减法运算符:x-y乘法运算符:x*y除法运算符:x/y指数运算符:x**y......
  • 基于springboot的社团管理系统java+vue项目(源码+lw+部署文档+讲解等)
    背景及意义该社团管理系统基于SpringBoot+Vue技术构建,旨在为学校或组织的社团管理提供高效、便捷的解决方案。对于社团成员而言,系统提供了便捷的参与渠道。成员可以通过系统查看社团的详细信息,包括社团简介、宗旨、活动安排等,以便更好地了解社团文化和活动内容。在......
  • javascript学习——二进制位运算符
    二进制位运算符概述二进制位运算符用于直接对二进制位进行计算,一共有7个。二进制或运算符(or):符号为|,表示若两个二进制位都为0,则结果为0,否则为1。二进制与运算符(and):符号为&,表示若两个二进制位都为1,则结果为1,否则为0。二进制否运算符(not):符号为~,表示对一个二进制位取反。异或......
  • 【JavaEE】【多线程】进程与线程的概念
    目录一、进程1.1系统管理进程1.2系统操作进程1.3进程控制块PCB关键属性1.4cpu对进程的操作1.5进程调度二、线程2.1线程与进程2.2线程资源分配2.3线程调度三、线程与进程区别四、线程简单操作代码4.1创建线程4.1.1start()与run()区别4.2查看线程一、进......
  • 【JavaEE】【多线程】Thread类讲解
    目录一、Thread构造方法二、Thread的常见属性三、创建一个线程四、获取当前线程引用五、终止一个线程5.1使用标志位5.2使用自带的标志位六、等待一个线程七、线程休眠八、线程状态九、线程安全9.1线程不安全原因总结9.2解决由先前线程不安全问题例子一、Thre......
  • Java 语言的呼叫中心话务系统
    Java作为一种广泛使用的编程语言,其强大的面向对象特性、跨平台能力以及丰富的库和框架,使得它在构建呼叫中心话务系统方面具有显著的优势。以下是Java代码构建的呼叫中心话务系统的主要优点,详细阐述如下:1. 跨平台兼容性Java的“一次编写,到处运行”的特性使得基于Java开发的......
  • 高级java每日一道面试题-2024年10月13日-数据库篇[Redis篇]-怎么保证缓存和数据库数据
    如果有遗漏,评论区告诉我进行补充面试官:怎么保证缓存和数据库数据的一致性?我回答:在分布式系统中,保证缓存和数据库数据的一致性是一个常见的挑战。由于缓存的引入主要是为了提高系统的性能和响应速度,但这也带来了数据一致性的问题。以下是一些常用的方法来保证缓存和......
  • 高级java每日一道面试题-2024年10月11日-数据库篇[Redis篇]-Redis都有哪些使用场景?
    如果有遗漏,评论区告诉我进行补充面试官:Redis都有哪些使用场景?我回答:Redis是一个开源的、基于键值对的数据结构存储系统,,它支持多种数据类型,包括字符串、散列、列表、集合和有序集合。它可以用作数据库、缓存和消息中间件。由于其高性能、丰富的数据结构支持以及多种......
  • Java项目:高校心理辅导系统(java+SpringBoot+Vue+elementui+mysql)
    源码获取:俺的博客首页"资源"里下载! 项目介绍基于Springboot+vue高校心理教育辅导设计与实现本系统分为前后台,包含管理员、学生、教师三种角色,前台为学生、教师登录,后台为管理员、学生、教师分别登录。前台主要功能:首页、心理健康学习、试卷列表、公告通知、留言反馈、......