Java面向对象——三大特性

摘要:本文主要介绍了面型对象的三大特性。

封装

什么是封装

封装,就是指一个类隐藏了对象的属性和实现细节,对自己的数据和方法进行访问权限控制,只允许某些类和对象进行访问和使用,其他的类不能进行访问和使用。

封装是面向对象的特征之一,是对象和类概念的主要特性。简单的说,一个类就是一个封装了数据以及操作这些数据的代码的逻辑实体。

在一个类的内部,某些代码或某些数据是私有的,不能被外界访问。通过这种方式,类对内部数据提供了不同级别的保护,以防止类中的私有数据被外部程序窃取和改动。

有什么好处

良好的封装能够减少耦合。耦合,指的是模块间的关联程度,封装可以使模块变得更加独立,降低了耦合度。

封装后的类,在类内部可以自由修改代码,不会影响外部的代码。

对类的成员进行精确的访问控制。

访问控制

public:公共访问权限。属性可以被所有类和对象访问,没有进行封装。

private:私有访问权限。只能在这个类中被访问,对属性和方法进行彻底的封装。

protected:继承访问权限。可以被子类访问,封装的不彻底。

一般来说,如果类中的某个属性不是公有的,而外部程序又需要访问,那么可以提供一个公有的方法,外部程序可以通过调用方法实现对该属性的间接访问。

继承

什么是继承

继承,指的是子类可以获得父类的属性和方法,并且可以在不影响父类代码的前提下,在子类里面对继承的方法进行改写,扩展添加父类里面没有的方法。

Java的继承是单继承,一个父类只能有一个子类,一个子类也只能有一个父类。

有什么好处

子类可以直接使用父类的属性和方法,不需要重复编写代码,提高了代码的可重用性。

特点

Object类是所有类的基类,所有的类都直接或间接继承了Object类,所以具备Object类的方法。

子类不可以继承父类的构造方法,但子类必须调用父类的构造方法。

子类的构造方法中默认调用父类的无参构造,如果父类没有无参构造,报编译错误。

子类用super调用父类的有参构造方法。

多态

什么是多态

多态,是指一个方法或一个对象具备多种表现形式。

多态的体现

多态主要变现在两个方面:引用多态和方法多态。

引用多态,即对象的向上转型,父类的引用指向子类的对象。

方法多态,即子类重写了父类的方法,子类在调用该方法的时候调用的是子类重写的方法,父类在调用该方法的时候调用的是父类的方法。

如果我们在子类中扩展了一个父类没有的方法,就不能通过父类的引用创建的子类对象来调用该方法。

引用类型转换

向上类型转换(自动类型转换): Animal animal = new Dog(); 。

小类型转换成大类型。

子类创建的实例指向父类的引用。

向下类型转换(强制类型转换): Dog dog = (Dog) animal; 。

大类型转换成小类型,有可能导致溢出。

子类的引用指向父类的引用。

如果将子类的引用指向父类创建的实例 Dog dog = (Dog) new Animal(); ,在编译时不会报错,但是在运行时会报错。

instanceof运算符

使用instanceof运算符来解决引用对象的类型,避免类型转换的安全性问题。

它的作用是测试它左边的对象是否是它右边的类的实例,返回boolean类型的数据。

在写程序的时候,如果要进行类型转换,我们最好使用instanceof运算符来判断它左边的对象是否是它右边的类的实例,再进行强制转换。

注意

继承是多态实现的基础。

Java面向对象——三大特性的更多相关文章

  1. 夯实Java基础系列1:Java面向对象三大特性(基础篇)

    本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 [https://github.com/h2pl/Java-Tutorial](https: ...

  2. Java基础1:深入理解Java面向对象三大特性

    更多内容请关注微信公众号[Java技术江湖] 这是一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM.SpringBoot.MySQL.分布式.中间件.集群.Linux ...

  3. 深入理解Java面向对象三大特性 封装 继承 多态

    1.封装 封装的定义: 首先是抽象,把事物抽象成一个类,其次才是封装,将事物拥有的属性和动作隐藏起来,只保留特定的方法与外界联系 为什么需要封装: 封装符合面向对象设计原则的第一条:单一性原则,一个类 ...

  4. java面向对象三大特性之继承

    通过重用已经测试并验证通过的代码,怎样才减少开发工作,所有开发团队都在为一问题而努力.一个久经考验的方法是通过有效地使用Java继承优化应用程序开发. 继承的从某种意义上讲,继承的短暂美就如同宇宙中所 ...

  5. java面向对象三大特性:封装、继承、多态

    一.封装 封装也称信息隐藏,是指利用抽象数据类型把数据和基于数据的操作封装起来,使其成为一个不可分割的整体,数据隐藏在抽象数据内部,尽可能的隐藏数据细节,只保留一些接口使其与外界发生联系.也就是说用户 ...

  6. Java面向对象三大特性

    封装.继承.多态. 1.封装 封装就是将对象的属性和行为特征包装到一个程序单元(即类)中,把实现细节隐藏起来,通过公用的方法来展现类对外提供的功能,提高了类的内聚性,降低了对象之间的耦合性. 2.继承 ...

  7. JAVA基础——面向对象三大特性:封装、继承、多态

    JAVA面向对象三大特性详解 一.封装 1.概念: 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问. 2.好处: 只能通过规定的方法访问数据. ...

  8. java提高篇(四)-----理解java的三大特性之多态

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

  9. 面向对象编程(九)——面向对象三大特性之继承以及重写、Object类的介绍

    面向对象三大特性 面向对象三大特征:继承 :封装/隐藏 :多态(为了适应需求的多种变化,使代码变得更加通用!) 封装:主要实现了隐藏细节,对用户提供访问接口,无需关心方法的具体实现. 继承:很好的实现 ...

随机推荐

  1. 74HC245引脚定义 使用方法

    典型的CMOS型三态缓冲门电路,八路信号收发器. 由于单片机或CPU的数据/地址/控制总线端口都有一定的负载能力,如果负载超过其负载能力,一般应加驱动器. 主要应用于大屏显示 引脚定义 DIR:方向控 ...

  2. 测试文档(final)

    1 引言 1.1编写目的 编写本测试计划的目的是: (1)     为整个测试阶段的管理工作和技术工作提供指南同时确定测试的内容和范围,为评价系统提供依据: (2)     此外还帮助安排测试活动,说 ...

  3. K60时钟分析

    转载:https://blog.csdn.net/hcx25909/article/details/7164650 1.飞思卡尔K60时钟系统          飞思卡尔K60时钟系统如上图所示,可以 ...

  4. C++学习一 结构与结构体

    结构体属于C++与C区别之一. 代码例子如下(来自<C++程序设计>): #include <iostream> #include <string> using n ...

  5. Badboy安装和简单介绍

    参考链接:https://www.cnblogs.com/baoziluo/p/7907964.html

  6. Vue入门案例(二)

    创建一个 .html 文件,然后通过如下方式引入 Vue: <!-- 开发环境版本,包含了有帮助的命令行警告 --> <script src="https://cdn.js ...

  7. es6 的类 class

    1.ES6提供了更接近传统语言的写法,引入了Class(类)这个概念,作为对象的模板.通过class关键字,可以定义类. 2. //定义类 class Point { constructor(x, y ...

  8. GitHub 上优秀的开源SLAM repo (更新中)

    GitHub 上优秀的开源SLAM repo (更新中) 欢迎 watch/star/fork 我们的 GitHub 仓库: Awesome-SLAM, 或者follow 项目的主页:Awesome- ...

  9. BootStrap、jQuery UI、bxSlider组件使用

    组件的使用 首先需要将组件下载下来放在统同级目录下 导入组件 使用组件 BootStrap 示例: <!DOCTYPE html> <html lang="en" ...

  10. 自定义安装office

    自定义安装office 1.下载office安装包:https://msdn.itellyou.cn 2.下载offiice部署工具:https://www.microsoft.com/en-us/d ...