Java面向对象——三大特性
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面向对象——三大特性的更多相关文章
- 夯实Java基础系列1:Java面向对象三大特性(基础篇)
本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 [https://github.com/h2pl/Java-Tutorial](https: ...
- Java基础1:深入理解Java面向对象三大特性
更多内容请关注微信公众号[Java技术江湖] 这是一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM.SpringBoot.MySQL.分布式.中间件.集群.Linux ...
- 深入理解Java面向对象三大特性 封装 继承 多态
1.封装 封装的定义: 首先是抽象,把事物抽象成一个类,其次才是封装,将事物拥有的属性和动作隐藏起来,只保留特定的方法与外界联系 为什么需要封装: 封装符合面向对象设计原则的第一条:单一性原则,一个类 ...
- java面向对象三大特性之继承
通过重用已经测试并验证通过的代码,怎样才减少开发工作,所有开发团队都在为一问题而努力.一个久经考验的方法是通过有效地使用Java继承优化应用程序开发. 继承的从某种意义上讲,继承的短暂美就如同宇宙中所 ...
- java面向对象三大特性:封装、继承、多态
一.封装 封装也称信息隐藏,是指利用抽象数据类型把数据和基于数据的操作封装起来,使其成为一个不可分割的整体,数据隐藏在抽象数据内部,尽可能的隐藏数据细节,只保留一些接口使其与外界发生联系.也就是说用户 ...
- Java面向对象三大特性
封装.继承.多态. 1.封装 封装就是将对象的属性和行为特征包装到一个程序单元(即类)中,把实现细节隐藏起来,通过公用的方法来展现类对外提供的功能,提高了类的内聚性,降低了对象之间的耦合性. 2.继承 ...
- JAVA基础——面向对象三大特性:封装、继承、多态
JAVA面向对象三大特性详解 一.封装 1.概念: 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问. 2.好处: 只能通过规定的方法访问数据. ...
- java提高篇(四)-----理解java的三大特性之多态
面向对象编程有三大特性:封装.继承.多态. 封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据.对外界而已它的内部细节是隐藏的,暴露给外界的只是它的访问方法. 继承 ...
- 面向对象编程(九)——面向对象三大特性之继承以及重写、Object类的介绍
面向对象三大特性 面向对象三大特征:继承 :封装/隐藏 :多态(为了适应需求的多种变化,使代码变得更加通用!) 封装:主要实现了隐藏细节,对用户提供访问接口,无需关心方法的具体实现. 继承:很好的实现 ...
随机推荐
- 一个匹配字字符串是aabbcc或者其他模式的运用
<!--一个匹配字字符串是aabbcc或aaaabccc或者其他模式的运用--> function isPattern(str, pattern) { let str_a = str.sp ...
- 多线程CGD调度组原理
我们常用的GCD调度组方式 //GCD常用调度组写法 -(void)demo1{ //创建调度组和队列 dispatch_group_t group = dispatch_group_create() ...
- 使用 Vim 搭建 C/C++ 开发环境
原文链接: https://spacevim.org/cn/use-vim-as-a-c-cpp-ide/ SpaceVim 是一个模块化的 Vim IDE,针对 C/C++ 语言的支持主要依靠 la ...
- 中文代码之Django官方入门:建立模型
参考编写你的第一个 Django 应用,第 2 部分 创建项目后,首先用中文命名应用: $ python3 manage.py startapp 投票 之后在models.py建立模型,其他各种相关配 ...
- mssql sqlserver sql脚本自动遍历重复生成指定表记录
摘要: 今天接到老板的需求,需根据一张表中列值,自动重复表中的数据行,然后显示给用户 实验环境:sqlserver 2008 R2 转自:http://www.maomao365.com/?p=841 ...
- Go切片去掉重复元素
1.Go切片去掉重复元素 如果传入的是string类型: //slice去重 func removeRepByMap(slc []string) []string { result := []stri ...
- ssh-copy-id 命令自动复制本机公钥到远程机器
ssh-copy-id 将本机的公钥复制到远程机器的authorized_keys文件中,ssh-copy-id能让你有到远程机器的home, ~./ssh , 和 ~/.ssh/authorized ...
- 7.3 DStream操作
一.Spark Streaming工作机制 在Spark Streaming中,会有一个组件Receiver,作为一个长期运行的task跑在一个Executor上: 每个Receiver都会负责一个i ...
- 23.Java基础_ArrayList类
ArrayList类的构造和使用方法 import java.util.ArrayList; public class test { public static void main(String[] ...
- Mybatis-plus中的常用注解
@TableName:数据库表相关 @TableId:表主键标识 @TableField:表字段标识 @TableLogic:表字段逻辑处理注解(逻辑删除) @TableId(type= IdType ...