java 封装 继承 堕胎_Java的继承、封装和多态

一、继承

继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。

81c63ea53aca18c0de66a38fdf30f182.png

继承的特性

子类拥有父类非 private 的属性、方法。

子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。

子类可以用自己的方式实现父类的方法。

Java 的继承是单继承,但是可以多重继承,单继承就是一个子类只能继承一个父类,多重继承就是,例如 A 类继承 B 类,B 类继承 C 类,所以按照关系就是 C 类是 B 类的父类,B 类是 A 类的父类,这是 Java 继承区别于 C++ 继承的一个特性。

提高了类之间的耦合性(继承的缺点,耦合度高就会造成代码之间的联系越紧密,代码独立性越差)。

继承关键字

继承可以使用 extends 和 implements 这两个关键字来实现继承,而且所有的类都是继承于 java.lang.Object,当一个类没有继承的两个关键字,则默认继承object(这个类在 java.lang包中,所以不需要 import)祖先类。

extends关键字

在 Java 中,类的继承是单一继承,也就是说,一个子类只能拥有一个父类,所以 extends 只能继承一个类。

implements关键字

使用 implements 关键字可以变相的使java具有多继承的特性,使用范围为类继承接口的情况,可以同时继承多个接口(接口跟接口之间采用逗号分隔)。

super 与 this 关键字

super关键字:我们可以通过super关键字来实现对父类成员的访问,用来引用当前对象的父类。

this关键字:指向自己的引用。

final关键字

final 关键字声明类可以把类定义为不能继承的,即最终类;或者用于修饰方法,该方法不能被子类重写:

构造器

子类是不继承父类的构造器(构造方法或者构造函数)的,它只是调用(隐式或显式)。如果父类的构造器带有参数,则必须在子类的构造器中显式地通过 super关键字调用父类的构造器并配以适当的参数列表。

如果父类构造器没有参数,则在子类的构造器中不需要使用 super关键字调用父类构造器,系统会自动调用父类的无参构造器。

补充

父类成员访问属性在父类中的含义在子类中的含义

public

对所有人开放

对所有人开放

protected

只有包内其它类、自己和子类可以访问

只有包内其它类、自己和子类可以访问

缺省

只有包内其它类可以访问

如果子类与父类在同一个包内:只有包内其它类可以访问,否则:相当于private,不能访问

private

只有自己可以访问

不能访问

二、Java 重写(Override)与重载(Overload)

重写(Override)

重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。

即外壳不变,核心重写!

重写的好处在于子类可以根据需要,定义特定于自己的行为。 也就是说子类能够根据需要实现父类的方法。

重写方法不能抛出新的检查异常或者比被重写方法申明更加宽泛的异常。例如: 父类的一个方法申明了一个检查异常 IOException,但是在重写这个方法的时候不能抛出 Exception 异常,因为 Exception 是 IOException 的父类,只能抛出 IOException 的子类异常。

方法的重写规则

参数列表必须完全与被重写方法的相同。

返回类型与被重写方法的返回类型可以不相同,但是必须是父类返回值的派生类(java5 及更早版本返回类型要一样,java7 及更高版本可以不同)。

访问权限不能比父类中被重写的方法的访问权限更低。例如:如果父类的一个方法被声明为 public,那么在子类中重写该方法就不能声明为 protected。

父类的成员方法只能被它的子类重写。

声明为 final 的方法不能被重写。

声明为 static 的方法不能被重写,但是能够被再次声明。

子类和父类在同一个包中,那么子类可以重写父类所有方法,除了声明为 private 和 final 的方法。

子类和父类不在同一个包中,那么子类只能够重写父类的声明为 public 和 protected 的非 final 方法。

重写的方法能够抛出任何非强制异常,无论被重写的方法是否抛出异常。但是,重写的方法不能抛出新的强制性异常,或者比被重写方法声明的更广泛的强制性异常,反之则可以。

构造方法不能被重写。

如果不能继承一个方法,则不能重写这个方法。

Super 关键字的使用

当需要在子类中调用父类的被重写方法时,要使用 super 关键字。

重载(Overload)

重载(overloading) 是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。

每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。

最常用的地方就是构造器的重载。

重载规则:

被重载的方法必须改变参数列表(参数个数或类型不一样);

被重载的方法可以改变返回类型;

被重载的方法可以改变访问修饰符;

被重载的方法可以声明新的或更广的检查异常;

方法能够在同一个类中或者在一个子类中被重载。

无法以返回值类型作为重载函数的区分标准。

重写与重载之间的区别

区别点重载方法重写方法

参数列表

必须修改

一定不能修改

返回类型

可以修改

一定不能修改

异常

可以修改

可以减少或删除,一定不能抛出新的或者更广的异常

访问

可以修改

一定不能做更严格的限制(可以降低限制)

总结

方法的重写(Overriding)和重载(Overloading)是java多态性的不同表现,重写是父类与子类之间多态性的一种表现,重载可以理解成多态的具体表现形式。

(1)方法重载是一个类中定义了多个方法名相同,而他们的参数的数量不同或数量相同而类型和次序不同,则称为方法的重载(Overloading)。

(2)方法重写是在子类存在方法与父类的方法的名字相同,而且参数的个数与类型一样,返回值也一样的方法,就称为重写(Overriding)。

(3)方法重载是一个类的多态性表现,而方法重写是子类与父类的一种多态性表现。

ee8843d039d1007dcbf8e513d3f902b6.png

三、Java多态

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

多态的优点

消除类型之间的耦合关系

可替换性

可扩充性

接口性

灵活性

简化性

多态存在的三个必要条件

继承

重写

父类引用指向子类对象

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

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

相关文章

P2782 友好城市

题目描述 有一条横贯东西的大河,河有笔直的南北两岸,岸上各有位置各不相同的N个城市。北岸的每个城市有且仅有一个友好城市在南岸,而且不同城市的友好城市不相同。每对友好城市都向政府申请在河上开辟一条直线航道连接两个城市,但…

五个在线图形工具创建简单的设计元素

有很多网站可以为图形元素生成提供服务,但获得非常好的工具并不容易。这就是为什么我共享五个在线的图形工具的原因 Logotype Maker 这是一个简单而自由的做标志的Web工具,它可以帮助您创建一个标志 BgPatterns BgPatterns按几次按键,做背景图…

sulin Python3.6爬虫+Djiago2.0+Mysql --实例demo

1.切换到项目目录下,启动测试服务器 manage.py runserver 192.168.0.108:8888 2.设置相关配置 项目目录展示如下: beauty>settings.py 修改 2.1 添加app到应用程序中 2.2 设置模板路径 2.3 配置数据为mysql 2.4设置静态文件路径 2.5设置漏油 3.beau…

dubbo的invoke命令_dubbo 调试服务telnet命令

1.概述在我们使用dubbo实现分布式布局时,如果我们想测试我们刚写好的service层服务是否正确时,通常要将service层和web层同时开启,通过浏览器调用controller层端口,达到测试service层的目的。有时,这样的测试方法过于麻…

【汇总】flash单个文件上传

之前有朋友给我发送email,询问我是否有单个文件上传的源代码,因为当时写这个好像是在09年,所以放哪了一时也没找着。后来整理硬盘的时候,找到了源码,所以决定来个汇总(之前写过的关于flashjs上传文件的例子…

weka的java环境配置_windows下安装和配置Weka

Weka是一款免费的,非商业化的,基于java环境下的开源的机器学习以及数据挖掘软件。Weka里含有各种数据挖掘工具:数据预处理,分类与回归,聚类,关联规则和可视化工具。一、安装weka我们首先需要到weka官网上下…

Windows部署服务WDS实例

一&#xff1a;概述<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />Windows&#xff08;Windows Deployment Services&#xff09; 部署服务适用与大中型网络中的计算机操作系统部署。可以使用 Windows 部署服务来管理映像以及无…

JAVA----爬虫(一)JSoup

jsoup 是一款Java 的HTML解析器&#xff0c;可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API&#xff0c;可通过DOM&#xff0c;CSS以及类似于jQuery的操作方法来取出和操作数据。 官方api:https://jsoup.org/ 一、jsoup功能 简单的例子&#xff1a;抓取wiki的…

极速理解设计模式系列:22.状态模式(State Pattern)

四个角色&#xff1a;抽象状态类(State)、具体状态类(ConcreateState)、情景类(Context)、客户端(Client) 抽象状态类(State):提供一个与情景类有关的State行为。 具体状态类(ConcreateState):实现这个行为&#xff0c;实现一个状态。 情景类(Context):维护一个State的实例对象…

[转]extern使用方法总结

Extern的问题在于不知道这个关键词出现的时候到底是声明还是定义。谨记&#xff1a;声明可以多次&#xff0c;定义只能一次。在使用中&#xff0c;要形成一种风格。 函数的声明extern关键词是可有可无的&#xff0c;因为函数本身不加修饰的话就是extern的。但是引用的时候一样是…

java 设置pdf 编码格式_Java如何设置PDF文档背景色详解

前言一般生成的PDF文档默认的文档底色为白色&#xff0c;我们可以通过一定方法来更改文档的背景色&#xff0c;以达到文档美化以及保护双眼的作用。 以下内容提供了Java编程来设置PDF背景色的方法。包括&#xff1a;设置纯色背景设置图片背景使用工具Spire.PDF for Java 2.0.3J…

产品架构开发方法(2011中国软件技术大会)

上周末在国家会议中心举办的2011中国软件技术大会上我做了一个分享&#xff1a;产品架构开发方法。很高兴能在不同的大会上做演讲&#xff0c;但更高兴的是能够结交更多的朋友。 这个演讲内容包括了企业架构、业务分析、软件产品线、产品管理等内容&#xff0c;知识量有点大哦。…

IDC机房KVM应用案例分析

IDC机房KVM应用案例分析<?xml:namespace prefix"o">?xml:namespace>一、背景介绍随着信息技术的发展&#xff0c;各行各业都在马不停蹄的开展着各自的信息化建设步伐。对于设计制造创新科技产品为运行主业的设计院而言&#xff0c;内部IT基础设备与机房管…

java跟踪会话_JavaWeb会话跟踪

cookie和session是常用的会话跟踪技术cookie机制1、web应用程序是使用HTTP协议传输数据的&#xff0c;HTTP协议是无状态的协议&#xff0c;一旦数据交换完毕就会关闭链接。Cookie可以弥补HTTP协议无状态的不足。位于&#xff1a;javax.servlet.http.Cookie2、Cookie具有不可跨域…

教你用身份证号查社保卡号 个人电脑号

适用前提&#xff1a;在广东省内交社保 用身份证查社保号第一步 登录广东社保局网站 广东社保局网站 在“全省个人养老保险信息查询“框输入你的身份证号码 这时要密码&#xff0c;面此要注册&#xff0c;注册时那红星星不用理会&#xff0c;除了姓名其他乱填即可&#xff0c;这…

X3D.Studio编辑器界面介绍

2019独角兽企业重金招聘Python工程师标准>>> X3DStudio编辑器的界面可分为【菜单栏】、【属性栏】、【显示栏】和【对象信息栏】四大部分。如下图所示。 X3D.Engine 通用虚拟现实引擎安装包下载地址&#xff1a;http://www.x3dengine.cn/Download.aspx 技术支持QQ群…

php 三方即时通讯_php即时通讯解决方案-请问PHP能否实现即时通讯?

最简单的说&#xff0c;它可以定期刷新&#xff0c;比如10秒的间隔。新数据&#xff0c;反馈到前台&#xff0c;没有新数据等待下次刷新。但实际上在应用中需要考虑消息的及时性、服务器压力等。php即时通讯。可以用comet来设计节点。js、socketphp即时通讯系统。总之&#xff…

php fopen插入文本_PHP 文件创建/写入

在项目中&#xff0c;我们在服务器上面操作文件&#xff0c;是一件非常频繁的事情。比如用户的投票的数据写入到txt文档中&#xff0c;缩略图上传&#xff0c;文件上传&#xff0c;及文件移动等等操作都离不开PHP 文件创建/读写/上传(上传我将会在下一节中讲到)。PHP 创建文件 …

【原译】在amazon kindle上安装Metasploit

免责申明&#xff08;必读&#xff01;&#xff09;&#xff1a;本博客提供的所有教程的翻译原稿均来自于互联网&#xff0c;仅供学习交流之用&#xff0c;切勿进行商业传播。同时&#xff0c;转载时不要移除本申明。如产生任何纠纷&#xff0c;均与本博客所有人、发表该翻译稿…

这就是搜索引擎:核心技术详解

这就是搜索引擎&#xff1a;核心技术详解张俊林 著ISBN 978-7-121-14865-12012年1月出版定价&#xff1a;45.00 元16开320页宣传语&#xff1a;改变全世界人们生活方式的“信息之门”内 容 简 介搜索引擎作为互联网发展中至关重要的一种应用&#xff0c;已经成为互联网各个领域…