java三大特征 重载与重写的区别

💡涉及的知识点速通

  • 🛫 OOP的三大特征都是什么?
    • 🪂 什么是封装?
    • 🪂 什么是继承?
    • 🪂 什么是多态?
  • 🛫 关于构造器你都知道什么?
  • 🛫 关于类的源文件都需要知道什么?
  • 🛫 重载和重写都是什么?

  各位小伙伴们大家好,欢迎来到这个小扎扎的《Java核心技术 卷Ⅰ》笔记专栏,在这个系列专栏中我将记录浅学这本书所得收获,鉴于 看到就是学到、学到就是赚到 精神,这波简直就是血赚

🛫 OOP的三大特征都是什么?

  要想知道OOP的三大特征,首先应该知道什么是OOP,OOP就是Object Oriented Programming面向对象程序设计语言,Java就是这么一门语言。面向对象程序设计语言的三大特征是封装、继承、多态,封装说明一个类的行为属性与其他类的关系——高内聚低耦合;继承是超类对子类的扩展;多态是超类变量的引用指向子类对象。

🪂 什么是封装?

  封装又叫数据隐藏,是处理对象的一个重要概念。简单来说封装就是将类的属性和行为组合在一个包中,并对对象的使用者隐藏内部的具体实现方式。实现封装的关键在于程序只能通过对象的方法与对象的数据进行交互(故又被认为是"黑盒"),无需知道对象的内部细节,这是提高重用性(其他类可以通过对象直接调用类的属性方法)和可靠性(隐藏内部细节,无法直接修改属性)的关键
  除了以上优点封装还有:我们可以使用访问器和更改器对外提供一个封装字段的获取和修改方法,并且可以在更改器中使用代码完成错误检查逻辑等操作,如果单纯将字段暴露出去随意调用的话就无法完成这个操作。在这里插入图片描述

🪂 什么是继承?

  继承的基本思想就是可以基于一个已有的类来创建新的类,继承已存在类就可以复用这个类的属性方法,除此之外还可以在继承的基础上自定义一些新的属性和方法。继承通过extends关键字完成,一个类只能继承自一个超类,但是超类还可以继承自其他的超类,这就是间接继承。
  谨记,继承之后可以在子类中可以增加字段和方法或者覆盖(重写)方法,但是继承绝不能也不会删除任何字段或者方法在这里插入图片描述

🪂 什么是多态?

  多态形式上就是超类的变量引用指向子类对象,于是多态的另一个要素就是两个类之间有继承关系。当使用多态实例化对象调用方法的时候,调用子类自定义的独有方法时会报错在这里插入图片描述调用的超类方法被子类重写后会使用子类重写的方法在这里插入图片描述

🛫 关于构造器你都知道什么?

  首先是构造器的简介:构造器又被称为构造函数,要想使用对象的话,首先必须要构造对象,在构造对象的同时构造器会运行并初始化类中字段的初始状态。关于构造器我们还需要了解的是:

  • 构造器的命名应该与类相同
  • 每个类中能够有一个以上的构造器
  • 构造器的参数可以是0~无数个
  • 构造器没有返回值
  • 千万别在构造器中定义与实例字段同名的局部变量
  • 构造器总是伴随着new操作串一起使用来实例化对象(实例化出来的Java对象都在堆中存储,使用new实例化会返回该对象的地址)

  如果在自定义类编写的时候不去定义构造器的话,编译器会默认提供一个该类的无参构造器,无参构造器没有初始化方法体的话就会初始化所有的变量成该数据对应类型的默认值,有初始化方法体就按方法体对字段进行初始化。只要是你定义了一个有参构造器的话,就不会提供默认的无参构造器,此时使用无参构造器实例化对象的话就会产生异常在这里插入图片描述

🛫 关于类的源文件都需要知道什么?

  一个.java文件中只能有一个public修饰的公共类,但是可以有任意数目的非公共类,源文件的文件名就是由这个public修饰的类名加上.java后缀组成在这里插入图片描述  当编译这个拥有两个类的.java文件时,编译器会在目录下创建两个类文件:一个是Test_construtor.class字节码文件,一个是Test.class字节码文件在这里插入图片描述  main方法可以在任意一个类中(公共类或者非公共类都可以),运行的时候需要将包含main方法的类名交给java.exe程序,即可执行返回相应的结果在这里插入图片描述  使用通配符*可以完成多个源文件的调用,这里假设People类和Fork类被分别放在两个源代码文件中,如果编译器发现People源文件使用到了Fork类的时候,就会查找名为Fork.class的字节码文件,如果找不到就会搜索Fork.java源代码文件进行编译。更重要的是,如果Fork.java的字节码文件有更新的话(也就是内容发生改变),java编译器就会自动重编译这个源代码文件。

🛫 重载和重写都是什么?

方法重载
  方法重载就是一个类中方法名相同但是方法的参数列表不相同的一堆方法,在这里参数列表不同说的是参数的类型、参数的个数、甚至于参数的顺序不一样。访问权限和方法的返回值类型不能作为方法是否重载的判断依据,也就是说当方法名和参数列表一样的时候,访问权限和方法的返回值类型不管是否一样都不算是方法重载。在这里插入图片描述  方法出现重载的时候说明这个类中有两个以上的同名方法,当我们调用方法的时候编译器是如何确定到底调用的是哪个方法的呢?这就要说到重载解析的概念了,重载解析就是使用各个重载方法中的参数类型与特定方法调用所使用的值类型和顺序进行匹配,从而挑选出正确的方法,当然都找不到的话就会产生编译时异常。
  方法签名的概念:方法名加参数类型的组合就是方法的签名,一个类中无法存在两个签名一样的方法在这里插入图片描述方法重写
  方法重写就是当子类继承超类之后就拥有了超类的属性和行为,但是超类不想原封不动的使用超类的行为,于是就重新定义超类的方法体。方法的重写应该注意的是:

  • 重写发生在超类和子类之间
  • 重写时的方法名、参数列表、返回值类型相同,但是如果重写方法的返回类型是被重写方法返回类型的子类的话也可以
  • 重写方法的访问权限大于被重写方法(public>protected>default>private)
  • 重写方法抛出新的检查异常或者抛出比被重写方法范围更大的异常
  • 子类无法重写超类的静态方法和私有方法

重载与重写的区别
  方法重载与重写之间的区别:方法重载与重写都是实现多态的一种方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态。重载发生在一个类中,重写发生在子类与超类之间,有关这两种形式中方法声明的具体要求参见上面的答案

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/535044.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

发生身份验证错误_Python MySQL8.0 错误

Python MySQL8.0 错误:authentication plugin calling_sha2_password is not supported.Python3 进行到 python3 mysql(mysql-connector),然后安装mysql-8.0.16,照着示例程序运行 python,遇到这个大大的问题:authentic…

vue 获取当前元素的父元素_react获取触发元素的属性 e.target.dataset

我的react项目中一个应用场景就是在点击一个元素的时候想要获取到这个元素的属性。代码如下&#xff1a;renderyear()>{return(<div><div data-value"年初">年初</div> </div>);}//点击标签的时候触发的函数 TagClick(e)>{console.log…

为什么要学Redis(NoSQL数据库)

各位小伙伴们大家好&#xff0c;欢迎来到这个小扎扎的Redis 6专栏&#xff0c;在这个系列专栏中我对B站尚硅谷的Redis教程进行一个总结&#xff0c;鉴于 看到就是学到、学到就是赚到 精神&#xff0c;这波依然是血赚 ┗|&#xff40;O′|┛ &#x1f4a1;Redis知识点速览&…

centos常用命令_二、Docker镜像是什么?Docker常用命令

科技奇闻 关注让你我共同进步文章来源&#xff1a;CSDN作者&#xff1a;IronmanJayDocker常用命令1.帮助命令docker version #查看版本号docker info #显示Docker系统信息&#xff0c;包括镜像和容器数docker --help #查看Docker有哪些命令…

实现定时中断_无线传感器网络实验报告(二)Timer定时应用实验

实验二&#xff1a; Timer定时应用实验2.1实验目的1. 认识并了解 CC2530 定时器&#xff1b; 2. 学习定时器的基本配置与应用&#xff1b; 3. 在 ZigBee 模块上运行定时器程序。2.2实验原理根据数据手册可知 CC2530 总共有 4 个定时器&#xff0c;但是定时器 2 被系统占用&…

详析java中的关键字和权限修饰

&#x1f4a1;涉及的知识点速通&#x1f6eb; 关于关键字你都知道什么?&#x1fa82; this和super关键字&#x1fa82; instanceof关键字&#x1fa82; static关键字&#x1fa82; final关键字&#x1f6eb; 权限修饰符的作用范围知多少?各位小伙伴们大家好&#xff0c;欢迎来…

JQ 全选后获取选中的值_Filecoin如何创建账户钱包并获取FIL测试币

昨天"猩动力节点"加入了fielcoin的测试网络&#xff0c;对用户或者矿工来说&#xff0c;如何获取代币&#xff0c;创建钱包保护好自己的资产&#xff0c;每一个用户来说都很关心。下面我们一起来学习如何创建账户钱包&#xff0c;并获取FIL 测试代币。在创建账户钱包…

Redis中 字符串的常用命令

各位小伙伴们大家好&#xff0c;欢迎来到这个小扎扎的Redis 6专栏&#xff0c;在这个系列专栏中我对B站尚硅谷的Redis教程进行一个总结&#xff0c;鉴于 看到就是学到、学到就是赚到 精神&#xff0c;这波依然是血赚 ┗|&#xff40;O′|┛ &#x1f4a1;Redis知识点速览&…

mac wmware 无网络_无线网络中常用的技术名词

1、LAN&#xff1a;即局域网&#xff1a;是路由和主机组成的内部局域网&#xff0c;一般为有线网络。2、WAN&#xff1a;即广域网&#xff1a;是外部一个更大的局域网。3、WLAN(Wireless LAN&#xff0c;即无线局域网)&#xff1a;前面我们说过LAN是局域网&#xff0c;其实大多…

python界面开发webview_python在webview和activity混合页面下怎么定位

展开全部 genymotion 模拟器&#xff1a;android 5.0.0 python 2.7 appium 1.4.16.1 1、app原生元素定位&#xff08;常用&#xff09; driver.find_element_by_id(“resourse-id”32313133353236313431303231363533e59b9ee7ad9431333363393662) driver.find_element_by_name(“…

androidstudio build tools安装_Android Studio4.0 安装及配置

本来打算十一月份写的&#xff0c;结果。。。就在我备注原来的文章的时候&#xff0c;硬盘坏了。。。所以重新配置环境。。。换硬盘&#xff0c;。。。坏的太突然以至于数据都没有备份。。。。建议大家在参考教程安装之前先大致浏览一遍&#xff0c;这样安装的时候就会大致知道…

Redis 五大数据类型的常用命令——列表、集合、哈希、有序集合

各位小伙伴们大家好&#xff0c;欢迎来到这个小扎扎的Redis 6专栏&#xff0c;在这个系列专栏中我对B站尚硅谷的Redis教程进行一个总结&#xff0c;鉴于 看到就是学到、学到就是赚到 精神&#xff0c;这波依然是血赚 ┗|&#xff40;O′|┛ &#x1f4a1;Redis知识点速览&…

aop注解配置切点 spring_springboot aop 自定义注解方式实现一套完善的日志记录

一&#xff1a;功能简介本文主要记录如何使用aop切面的方式来实现日志记录功能。主要记录的信息有: 操作人&#xff0c;方法名&#xff0c;参数&#xff0c;运行时间&#xff0c;操作类型(增删改查)&#xff0c;详细描述&#xff0c;返回值。二&#xff1a;项目结构图如果想学习…

抽象类、接口的区别和相似点

各位小伙伴们大家好&#xff0c;欢迎来到这个小扎扎的《Java核心技术 卷Ⅰ》笔记专栏&#xff0c;在这个系列专栏中我将记录浅学这本书所得收获&#xff0c;鉴于 看到就是学到、学到就是赚到 精神&#xff0c;这波简直就是血赚 &#x1f4a1;涉及的知识点速通&#x1f6eb; abs…

c标签判断true false jsp_Java学习知识点:小白如何掌握JSP技术?

今天千锋广州小编就给大家分享零基础如何掌握JSP技术&#xff0c;下面一起来看看吧!一、Java初级开发之jsp概述1.关于jspJavaServer Pages简称jsp&#xff0c;从“server”这个词可以看出&#xff0c;这其实也是一门java服务端技术&#xff0c;其实可以简单的把jsp认为是servle…

python语言保留字的特点_python保留字及其说明

原博文 2019-07-14 22:05 − 保留字 说 明 and 用于表达式运算&#xff0c;逻辑与操作 as 用于类型转换 assert 断言&#xff0c;用于判断变量或条件表达式的值是否为真 break 中断循环语句的执行 class 用于定义类 continue 继续执行下一次循环 ...011647 相关推荐 2019-12-19…

使用Java操作Redis的两种方式Jedis、RedisTemplate

各位小伙伴们大家好&#xff0c;欢迎来到这个小扎扎的Redis 6专栏&#xff0c;在这个系列专栏中我对B站黑马的Redis教程进行一个总结&#xff0c;鉴于 看到就是学到、学到就是赚到 精神&#xff0c;这波依然是血赚 ┗|&#xff40;O′|┛ &#x1f4a1;Redis知识点速览&#…

python提取数据库数据_Python如何读取MySQL数据库表数据

本文实例为大家分享了Python读取MySQL数据库表数据的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下 环境&#xff1a;Python 3.6 ,Window 64bit 目的&#xff1a;从MySQL数据库读取目标表数据&#xff0c;并处理 代码&#xff1a; # -*- coding: utf-8 -*- import p…

【项目实战】基于Redis实现短信验证码登录 (附源码、思路)

各位小伙伴们大家好&#xff0c;欢迎来到这个小扎扎的Redis 6专栏&#xff0c;在这个系列专栏中我对B站黑马的Redis教程进行一个总结&#xff0c;鉴于 看到就是学到、学到就是赚到 精神&#xff0c;这波依然是血赚 ┗|&#xff40;O′|┛ &#x1f4a1;Redis知识点速览&#…

加工中心刻字宏程序_FANUC OI系列图书——车床、铣床及加工中心编程

☞ 这是金属加工(mw1950pub)发布的第10035篇文章导读今天跟大家分享FANUC OI系列图书&#xff0c;包括车床、铣床及加工中心编程&#xff0c;快来看看吧&#xff01;《FANUC 0i数控车床/加工中心编程技巧与实例》选择在企业里应用*广泛、编程*具代表性的日本FANUCSeries0i-TC/T…