我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:六合图库 > 多态逻辑 >

Java三大特性——继承封装和多态

归档日期:04-25       文本归类:多态逻辑      文章编辑:爱尚语录

  基础不牢固的原因,于是继续看Java编程思想,遇到重要的地方就做一些总结。

  比如,猫是动物的一种,它理应拥有动物最基本的属性和功能,所以构造Cat类时就可以继承已有的Animal类,在其基础上做扩展。Cat类就称为子类,Animal类就称为父类。

  继承很方便的实现了代码复用,子类可以直接获得父类的已有功能,不需自己实现,然后再扩展自己独有的功能就好,效率提高。

  但这是一种强耦合关系,因为父类的实现是对子类透明的,父类变动则所有子类均受变动,而且Java有单继承限制,一个类只能有一个父类,哪怕它与很多类有IS—A关系。

  一个类中的内容可大致分成三部分:属性,方法和构造器。就从这三方面分析子类真正继承了什么。

  构造器:构造器只能调用,不可继承。Java有构造方法链,编译器会从父类的构造方法开始向子类一级一级完成构建,这是必须的,对父类构造方法的调用一定是子类构造方法中的第一行代码。当然,若父类有默认的空参构造器,编译器会默认调用不需我们手动调用,但若父类没有,则必须手动调用:super(XXX).

  对象有自己的属性和方法,当我们需要对这些信息加以保护或限制外界的访问权限时,就要使用封装。

  比如,对一些重要实现逻辑客户不能更改也不必知道,就可使用private修饰符,对一些重要属性客户只能读不能写,就可使用private修饰符外加get方法。

  减少相互间的依赖,降低耦合,容易维护和使用;内部逻辑更改迭代不会影响客户的使用;控制了客户权限,安全性提高。

  其中,public型无限制,protected型限制为子类或包内可访问,void型限制包内可访问,private型限制仅类中可访问。

  一个变量一般有声明类型和实际类型两种属性,如上代码,变量a的声明类型为Animal,实际类型为Cat,这是多态的一部分体现。

  所谓多态,是指变量的实际类型及变量最终会调用何处的实现(属性和方法等)只有在运行期间才确定,编译时并不确定。正因为运行时才确定,所以无需更改逻辑代码,运行状态(可以理解为run起来的代码)就会随变量实际类型的改变而改变,这就是多态性。

  上面的方法,传入Cat型参数,运行时执行的就是Cat类中eat方法,传入Dog型参数,就会执行Dog类中的eat方法了。

  如上,若eat方法只存在于Animal类,没有问题,最后调用的就是Animal类中的eat方法;若只存在于Cat类,则会报错,因为向上转型后,a无法直接调用子类中的方法,编译失败,必须先进行类型强转后才可;那若Animal类和Cat类中均有eat方法呢,调用的是Animal类还是Cat类中的呢?编译和运行时一样吗?调用属性时又是什么情况?

  不论声明类型与实际类型是否一致,对属性来说:编译检测和运行调用均看声明类型,无论静态与否;对方法来说:则要区分静态与否,静态下编译检测和运行调用均看声明类型,非静态下编译检测看声明类型,运行调用看实际类型。

  继承代表IS—A型关系,接口代表HAS—A型关系。比如,新陈代谢这个功能,猫有,树木也有,他们与新陈代谢之间就是典型的HAS—A型关系,所以就应该用接口实现。相对于继承,接口可以多实现,就是说一个类只能继承一个父类但可以实现多个接口,这样就有更灵活的扩充性和组合性。

  Java中面向对象3大特性中,继承和多态还是挺重要的,也是面试题中常考内容之一。一.继承:(extends关键字,父类最好用protected,构造方法有参和无参均写上,注意方法重写和重载)定义:从父...博文来自:HaleyLiu123的博客

  1.封装    封装:就是隐藏对象的属性和实现细节,仅对外提供公共访问方式。   封装的好处:隐藏类的实现细节;让使用者只能通过程序员规定的方法来访问数据;可以方便的加入存取控制语句,限制不合理操作....博文来自:今生梦梦今生

  面向对象的三个基本特征面向对象的三个基本特征是:封装、继承、多态。其中,封装可以隐藏实现细节,使得代码模块化;继承可以扩展已存在的代码模块(类);它们的目的都是为了——代码重用。而多态则是为了实现另一...博文来自:景月娇 廊坊师范学院信息技术提高班 十四期

  抽象:我们在定义一个类的时候,实际上就是把一类事物的公有的属性和行为提取出来,形成一个物理模型,这种研究问题的方法称为抽象。 封装:封装就是把抽象的数据和对数据进行的操作封装在一起,数据被保存在内部,...博文来自:manchengpiaoxue的博客

  面向对象的三大特点:封装:将有一定功能的代码封装起来,使用时调用即可继承:将公共的属性和方法放在父类中,自己自考虑特有的属性和方法。多态:程序运行过程中,根据执行条件的不同,动态执行不同的操作代码的过...博文来自:yangkaiorange的博客

  Java面向对象的三大特征:封装、继承、多态封装和继承几乎都是为多态而准备的封装就是把同一类事物的共性(包括属性和方法)归到同一类中,方便使用。也就是说封装:封装也称信息隐藏,是指利用抽象数据类型把数...博文来自:bug_404的博客

  Java的三大特性是什么三大特性分别是封装、继承、多态。注:有人说抽象(abstract)也是特性,但在某些书中不支持这说法。封装:由类(class)来体现的,我们可以把现实生活中的一类实体定义成类,...博文来自:lly983909814的博客

  一、继承:一个类继承另一个类,则继承的类为子类,被继承的类为父类。它的目的就是实现代码的复用。子类继承父类后就自动拥有了父类的属性和方法,但是,父类的私有属性和构造方法并不能被继承。另外,继承后子类还...博文来自:……

  1、 什么是继承,继承的特点?子类继承父类的特征和行为,使得子类具有父类的各种属性和方法。或子类从父类继承方法,使得子类具有父类相同的行为。特点:在继承关系中,父类更通用、子类更具体。父类具有更一般的...博文来自:新新

  “世界处处不设计”有物混成,先天地生。寂兮寥兮,独立而不改,周行而不殆,可以为天地母。吾不知其名,字之曰道,强为之名曰大。大曰逝,逝曰远,远曰反。道是什么?道可道,非常道。道不明,说不尽的才算是道,它...博文来自:平凡之路无尽路的博客

  封装:封装是实现面向对象程序设计的第一步,封装就是将数据或函数等集合在一个个的单元中(我们称之为类)。被封装的对象通常被称为抽象数据类型。  封装的意义:封装的意义在于保护或者防止代码(数据)被...博文来自:c_w_d的博客

  本文是对面向对象编程三大特性(封装、继承、多态)的一个学习总结。封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据。对外界而已它的内部细节是隐藏的,暴露给外界的只是...博文来自:简约人生的博客

  一、封装是把过程和数据包围起来,对数据的访问只能通过已定义的接口。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。封装是一种信...博文来自:樊灵洁

  java的三大特性主要是      一:封装   在面向对象程式设计方法中,封装(英语:Encapsulation)是指一种将抽象性函式接口的实现细节部份包装、隐藏起来的方法。   封装可以被认为是一...博文来自:HRZIT的博客

  继承(inheritance)简单的说,继承就是在一个现有类型的基础上,通过增加新的方法或者重定义已有方法(下面会讲到,这种方式叫重写)的方式,产生一个新的类型。继承是面向对象的三个基本特征--封装、...博文来自:jayxu无捷之径的博客

  为什么要面向对象编程?以前开发的过程通常是采用面向过程编程,面向过程是以过程为中心来进行编程设计,本质上是分析出需要哪些过程,在编程时一步步的对其实现,但是随着软件规模的扩大,这种面向过程的设计模式已...博文来自:王洋的专栏

  Java语言的三大特性即是:封装、继承、多态封装:首先,属性可用来描述同一类事物的特征,方法可描述一类事物可做的操作。封装就是把属于同一类事物的共性(包括属性与方法)归到一个类中,以方便使用。1.概念...博文来自:的博客

  我们知道封装、继承和多态是面向对象方法设计中的三大基本特性,下面将具体讲解这三个特性的具体表现及意义。一、封装1、说明从字面意思上看,封装就是打包的意思,将什么包装起来,专业一点就是信息的隐藏,将...博文来自:张慧颖 廊坊师范学院信息技术提高班 十四期

  今天看了一下js,加强javascript.资料来源于传智播客与网络。做了一些记录,如下:java三大特性:封装、继承、多态。js也能将这三大特性体现的淋漓尽致。js对象也是一样的,一直做java,...博文来自:yang576017120的专栏

  一、面向对象的三大特性:   1.封装:是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。封装是类的特征之一,应该很好理解,像一些私有的,别的类...博文来自:众里寻她千百度,蓦然回首,那人却在灯火阑珊处

  this在每个类的内部,都有一个隐含的成员变量,该类的类型就是该类的类型,该成员变量的名称是this,this是一个引用,指向自身的对象。this的用法:        1、this调用本类中的属性,...博文来自:dragon901的博客

  继承继承可以使现有的代码具有可重用性和可扩展性。它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。其继承的过程,就是从一般到特殊的过程。通过继承创建的新类称为”子类”或”...博文来自:T_tangcのblog

  c++是基于面向对象的编程语言,面向对象的三大特性为:封装、继承和多态。本文将我对继承与多态的理解进行了总结归纳,这部分内容对于学习c++编程语言是非常重要的,文章加入我的个人理解,希望能给大家带来帮...博文来自:XHfight的博客

  本文参照于狄泰软件学院,唐佐林老师的——《C++深度剖析教程》博文来自:食梦者

  本文结合Java的类的复用对面向对象两大特征继承和多态进行了全面的介绍。首先,我们介绍了继承的实质和意义,并探讨了继承,组合和代理在类的复用方面的异同。紧接着,我们根据继承引入了多态,介绍了它的实现机...博文来自:Ricos Blogs

  我们前面已经介绍了面向对象编程的三大特性之二,今天就介绍最后一个特性-多态。什么叫多态?从字面上理解就是多种形态,即对同一个客体,可以有多种不同的形式。就好像糖一样,有多种口味,你想吃什么口味的就可以...博文来自:明立的博客

  封装java中的第一特性就是封装,以世界中的实体体现到计算机的世界,每个对象都有自己的属性和行为。java中用类来将属性和行为封装到一起,将这个类的实例创建出来以后,这个实例就有这样的属性和行为,并对...博文来自:u011716788的博客

  一、Java的三大特性(封装,继承,多态)a)封装        面向对象程式设计中,封装(Encapsulation)就是把类的内部与外界隔离起来,把实现数据和方法的包装(隐藏),防止该类的代码和数...博文来自:大Z小z的博客

  一、封装C#中可使用类来达到数据封装的效果,这样可以使数据与方法封装成单一元素,以便于通过方法存取数据。除此之外,还可以控制数据的存取方式。在面向对象编程中,大多数都是以类作为数据封装的基本单位。类将...博文来自:的博客

  C++封装继承多态总结面向对象的三个基本特征面向对象的三个基本特征是:封装、继承、多态。其中,封装可以隐藏实现细节,使得代码模块化;继承可以扩展已存在的代码模块(类);它们的目的都是为了——代码重用。...博文来自:ruyue_ruyue的专栏

  转载自一、封装(encapsulation)封装性就是把类(对象)的属性和行为结合成一个独立的相同单位,并尽...博文来自:的博客

  一、继承的基本概念什么是继承?继承就是可以直接使用前辈的属性和方法。为什么需要继承?自然界如果没有继承,那一切都是处于混沌状态。在软件开发中,我们可以借鉴自然界的机制。已经有的东西我们希望能够直接拿来...博文来自:晚来风急

  每个学习Java的人,都能很直接的说出来Java的三大特性:封装,继承,多态。lt;封装gt;封装是把过程和数据包围起来,对数据的访问只能通过自定义的接口,这个可以保护里面的数据和...博文来自:ls__today的博客

  1)封装封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。2)继承继承,是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写...博文来自:o_ozbl的博客

  封装封装包括两个字,封和装。先是装,后才封。在面向过程语言中,一般数据都是相互独立,例如姓名、年龄、性别这些数据,虽然它们都是在描述一个人,但是它们数据是离散的。这样就不便于数据的传递,例如方法需要的...博文来自:灵葱的博客

  面向对象编程有三大特性:封装、继承、多态。      封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据。对外界而已它的内部细节是隐藏的,暴露给外界的只是它的访问方...博文来自:chenssy的博客

  编写程序实现披萨的制作。需求说明编写程序,接收输入信息,选择需要制作的披萨。可供选择的披萨有:培根披萨和海鲜披萨。实现思路及关键代码1)分析培根披萨和海鲜披萨。2)定义披萨类(作为父类)。属性:名称、...博文来自:weixin_42813370的博客

  要分享Js一些基础理论知识,但是在项目中却十分实用。回想之前一次令人心碎的面试,等了将近50分钟,可是面试却不到10分钟,我的心里受到成吨的打击与伤害,以前一直不注重扎实基础,当面试官坐下的那一刻我就...博文来自:sunshine的博客

  转载地址:点击打开链接字节流与和字符流的使用非常相似,两者除了操作代码上的不同之外,是否还有其他的不同呢?实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用了缓...博文来自:lwang_IT的博客

  本文内容总结于多篇博客,参考到的地方在文中都会一一列出封装封装的定义:首先是抽象,把事物抽象成一个类,...博文来自:zjkC050818的博客

  前几篇是Java的入门篇,主要是了解一下Java语言的相关知识,从本篇开始是Java的进阶篇,这部分内容可以帮助大家用Java开发一些小型应用程序,或者一些小游戏等等。本篇的主题是接口、继承与...博文来自:adamjwh的博客

  面向对象的三个基本特性就是:封装、继承和多态。前面讲解了java程序都是由类文件组成的,java是面向对象的程序设计语言,在java中面向对象的思想就是由类的设计来体现的,也即类的继承、封装和多态。 ...博文来自:liujun13579的专栏

  Java的三大特性详解封装封装的定义封装(Encapsulation)是面向对象方法的重要原则,就是把对象的属性和操作(或服务)结合为一个独立的整体,并尽可能隐藏对象的内部实现细节。封装的好处良好的封...博文来自:u013777975的博客

  java的三大特性:封装:把属于同一类事物的共性(包括属性与方法)归到一个类中,以方便使用。 1:概念:指利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体,数据被保护在...博文来自:爱犬酋酋

  封装:将对象的属性方法进行隐藏,只对特定的对象提供访问权限,通过权限修饰符,方法的参数隐藏来实现隐藏具体的实现过程,从而达到保护数据隐私,计算思维中有一个重要的概念是抽象,即忽略具体,关注重点,这个思...博文来自:ld3205的博客

  首先我们来安装python 1、首先进入网站下载:点击打开链接(或自己输入网址),进入之后如下图,选择图中红色圈中区域进行下载。 ...博文来自:陌上行走的博客

  小憩之后,继续为你解读AndFix热修复框架,呵呵。上一篇Alibaba-AndFix Bug热修复框架的使用已经介绍了AndFix的使用,这篇主要介绍AndFix原理以及源码解析。AndFix原理A...博文来自:我是乔同学

  转载请标明地址:一路有你,2017一起奋斗! ...博文来自:高磊的专栏

  介绍  在介绍Bugly之前,需要先向大家简单介绍下一些热更新的相关内容。当前市面的热补丁方案有很多,其中比较出名的有阿里的AndFix、美团的Robust以及QZone的超级补丁方案。但它们都存在无...博文来自:Chay_Chan的博客

  脚本开发方式:方式一:使用shell脚本方式; 1.下载vim for mac 2.打开搜索 , 输入ter,打开终端窗口 3.输入vim,进入vim的编辑界面 ...博文来自:苦练杀敌本领

  1. 前言 隐马尔科夫HMM模型是一类重要的机器学习方法,其主要用于序列数据的分析,广泛应用于语音识别、文本翻译、序列预测、中文分词等多个领域。虽然近年来,由于RNN等深度学习方法的发展,HMM模型...博文来自:tostq的专栏

  Java中的ThreadLocal类允许我们创建只能被同一个线程读写的变量。因此,如果一段代码含有一个ThreadLocal变量的引用,即使两个线程同时执行这段代码,它们也无法访问到对方的Thread...博文来自:u011860731的专栏

  本文转载自本系列文章分为三个部分,首先对HEVC标准做一个介绍,然后回顾...博文来自:liangjiubujiu的博客

  公司产品之前使用xmpp作为底层库,之前同事编译自己的sdk静态库想生成.a库,但是各种编译问题(其实耐心修改配置都能解决),但是从百度找到方案用framework可以解决,所以最终使用的是frame...博文来自:mingming24的专栏

  “机器学习”是一个很实践的过程。就像刚开始学游泳,你在只在岸上比划一堆规定动作还不如先跳到水里熟悉水性学习来得快。以我们学习“机器学习”的经验来看,很多高大上的概念刚开始不懂也没关系,先写个东西来跑跑...博文来自:龙心尘

  连接池用于创建和管理数据库连接的缓冲池技术,缓冲池中的连接可以被任何需要他们的线程使用。当一个线程需要用JDBC对一个数据库操作时,将从池中请求一个连接。当这个连接使用完毕后,将返回到连接池中,等待为...博文来自:Napoleon的专栏

  最近比较有空,大四出来实习几个月了,作为实习狗的我,被叫去研究Docker了,汗汗! Docker的三大核心概念:镜像、容器、仓库 镜像:类似虚拟机的镜像、用俗话说就是安装文件。 容器:类似一个轻量...博文来自:我走小路的博客

  ATSHA204A加密芯片是ATMEL公司研发的一款高安全性的,功能丰富的加密IC,使用SHA-256算法进行加密操作,内置16*32字节的slot(EEPROM)可以存储用户数据和秘钥,唯一的9字节...博文来自:a5882230的专栏

  本篇文章是根据我的上篇博客,给出的改进版,由于时间有限,仅做了一个简单的优化。相关文章:将excel导入数据库2018年4月1日,新增下载地址链接:点击打开源码下载地址十分抱歉,这个链接地址没有在这篇...博文来自:Lynn_Blog

  Cocos2d-x 2.2.3 使用NDK配置编译环境2014年6月11日 Cocos2d-x 3.0以下的开发环境的配置恐怕折磨了很多人,使用cygwin配置编译环境足够让初学者蛋疼一阵子了。本篇博...博文来自:巫山老妖

  jquery/js实现一个网页同时调用多个倒计时(最新的) 最近需要网页添加多个倒计时. 查阅网络,基本上都是千遍一律的不好用. 自己按需写了个.希望对大家有用. 有用请赞一个哦! //js ...博文来自:Websites

  测试环境莫名其妙有几条重要数据被删除了,由于在binlog里面只看到是公用账号删除的,无法查询是那个谁在那个时间段登录的,就考虑怎么记录每一个MYSQL账号的登录信息,在MYSQL中,每个连接都会先执...

  自己整理编写的逻辑回归模板,作为学习笔记记录分享。数据集用的是14个自变量Xi,一个因变量Y的australian数据集。 1. 测试集和训练集3、7分组 australian ...

本文链接:http://lcvam.com/duotailuoji/203.html