很多java初学者,在学到Java面向对象方面的知识点的时候,会觉得这块的知识点真的蛮绕的,一个知识点一个知识点的往外冒,对于初学者来说区分构造器和方法就花费了一整天的时间。现在小编带大家重新过一遍知识点~

先背下来一个理念:

面向对象程序设计是将数据放在第一位的,然后再考虑操作数据的方法。之前,再学习Java的优越性的时候,我们知道了Java是一种面向对象设计的程序设计语言。那到底什么是面向对象程序设计呢?要弄懂它,首先我们简单了解一下另一种程序设计。

一、面向过程程序设计:

面向过程程序设计就是自顶向下顺序执行,逐步求精;其程序结构是按照功能划分为若干个基本板块,这些板块形成一个树状结构;各模块之间的关系尽可能的简单,在功能上相对独立;每一板块内部均是由顺序、选择和循环三种基本结构组成的;其板块化实现的具体方法是使用与子程序。程序流程在写程序时就已决定。

(这个概念是我在学习面向对象时在网上找的,我把它和面向对象程序设计的概念抄在一张白纸上,其实我也不知道啥是面向过程程序设计,但是,当我学完一遍面向对象和类之后,再回来看这个概念时,是有收获的。没学过面向过程也不敢多言,仅仅学了一遍面向对象更不敢多加评论了。依照我的理解就是面向过程就像把某件事情的所有工作流程都弄成环环相扣的了,牵一发而动全身。而面向对象呢,它很聪明,它像一个制造大型机械的厂家,零件啥的它不一定都自己弄,但是它可以用尽办法去拼装(当然,拼装你也要遵循人家制定的规则),这样的好处在于,想改那块都不用担心整个工程跟着受牵连,尤其是在客户端那块。)

二、面向对象程序设计:

面向对象程序设计简称OOP,它是当今主流的程序设计范例,它已经取代了20世纪7年代的“结构化”过程化程序设计开发技术。面向对象就是把数据及对数据的操作方法放在一起,作为一个互相依存的整体,我们就叫它对象。对同类对象抽象出其共性,就形成了类。类中的大多数数据只能用于本类的方法进行处理。类通过一个简单的外部接口与外界发生关系,对象与对象之间通过消息进行沟通。程序流程由用户使用中决定。Java是完全面向对象的,必须熟悉OOP才能够编写Java程序。

(图)演示面向对象程序设计与面向过程程序设计的不同

下面这句话很重要:

 面向对象的程序是由对象组成的,每个对象包含对用户公开的特定功能部分和隐藏的实现部分。

三、类

类(class)是构造对象的模版或蓝图。由类构造(construct)对象的过程成为创建类的实例(instance)。

在学习这里的时候,不免会有些惊慌,那么多类都需要记住啊?自己还要创建类?自己创建的类里面的内容能想全面吗?种种疑惑在心里挥之不去。其实啊,用Java编写的所有代码多位于某个类的内部。标准的Java库提供了几千类,可以用于用户界面设计、日期、日历和网络程序设计。尽管如此,我们在弄自己的项目时,也是需要根据具体情况的不同进行增加、删除和改动的。

四、封装

封装(encapsulation,有时候被成为数据隐藏),看视频课,他们把封装形容问get、set方法。从形式上看,封装不过是将数据和行为组合在一个包中,并对对象的使用者隐藏了数据的实现方式。

对象中的数据称为实例域(instancefield),操作数据的过程称作方法(method)。对于每个特定的类实例(对象)都有一组特定的实例域值。这些值的集合就是这个对象的当前状态(state)。

下面这句话很重要,背下来:

实现封装的关键在于绝对不能让类中的方法直接的访问其他类的实例域。程序仅通过对象的方法与对象的数据进行交互。

 封装给对象赋予了'黑盒“特征,这是提高重用性和可靠性的关键。这意味着一个类可以全面地改变存储数据的方式,只要仍旧使用同样的方法操作数据,其他对象就不会知道或介意所发生的变化。

//这句话是啥意思?就是说如果你哪天有需求想要定义一个Java的类,就不用担心其他的类会受到你的干扰了,你可以通过扩展一个类来建立一个你需要的新类。别忘了,实际上,在Java中所有的类都源自于一个Object。以后,我会继续介绍Object。

====封装的过程:

1.封装是将属性私有化(private);

2.你要提供get/set方法(get/set不一定都提出来,具体看你自己的需求。如果你不想让别人得到,就不提供get;如果你不想让别人设置,你就拒绝提供set。)

====访问符权限:

访问符本类中本包中本包子类中外包类外包子类

public(常用)可以访问可以访问可以访问可以访问可以访问

protected可以访问可以访问可以访问不可以访问可以访问

缺省可以访问可以访问可以访问不可以访问不可以访问

private(常用)可以访问不可以访问不可以访问不可以访问不可以访问

代码示例:

1publicclassXiaoNanHai{2privateintage;3publicvoidsetAge(intage){4if(age>=15&&age<=35)5this.age=age;}else{6System.err.println"你输入的年龄不在指定范围内,请重新输入”);7}8}


最后,我自己是一名从事了多年开发的Java老程序员,辞职目前在做自己的Java私人定制课程,今年年初我花了一个月整理了一份最适合2019年学习的Java学习干货,可以送给每一位喜欢Java的小伙伴,想要获取的可以关注我的头条号并在后台私信我:01,即可免费获取。

java面向对象程序设计第三版耿祥义pdf_java基础知识干货——封装相关推荐

  1. java面向对象程序设计第三版_JAVA面向对象程序设计之创建型设计模式

    [本文详细介绍了JAVA面向对象程序设计中的创建型设计模式,欢迎读者朋友们阅读.转发和收藏!] 1 基本概念 1.1 什么是设计模式 设计模式( Design pattern )是一套被反复使用.多数 ...

  2. java基础教程第三版耿祥义,后台开发JAVA岗

    Java虚拟机内存模型 Java虚拟机内存模型中定义的访问操作与物理计算机处理的基本一致! Java中通过多线程机制使得多个任务同时执行处理,所有的线程共享JVM内存区域main memory,而每个 ...

  3. java基础教程第三版耿祥义电子档,统统都会!

    容器化时代来了 虚拟化技术已经走过了三个时代,没有容器化技术的演进就不会有 Docker 技术的诞生. (1)物理机时代:多个应用程序可能会跑在一台机器上. (2)虚拟机时代:一台物理机器安装多个虚拟 ...

  4. 20155229实验三 《Java面向对象程序设计实验三 敏捷开发与XP实践 》实验报告

    实验题目 1.在IDEA中使用工具(Code->Reformate Code)把下面代码重新格式化,再研究一下Code菜单,找出一项让自己感觉最好用的功能. 2.下载搭档实验二的Complex代 ...

  5. java语言程序设计第三版答案郎波著,太完整了!

    Java基础 1Java语言的三大特性 2.Java语言主要特性 3. JDK和JRE有什么区别 4.Java基本数据类型及其封装类 5.如果main方法被声明为private会怎样? 6.说明- - ...

  6. Java面向对象程序设计(第二版)袁绍欣 第十章课后习题答案

    8.如何实现集合对象排序?定义一个复数类并按照复数的实部大小对复数对象进行排序. import java.util.ArrayList; import java.util.Collections; i ...

  7. Java面向对象程序设计(第二版)袁绍欣 第九章课后习题答案

    线程和进程的联系和区别是什么? 区别: 进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动,它是系统进行资源分配和调度的一个独立单位. 线程是进程的一个实体,是CPU调度和分配的基本单位. ...

  8. 再见SpringMVC!java语言程序设计第三版答案郎波

    4步套路,解决动态规划问题 1.确定问题状态 提炼最后一步 的问题转化 2.转移方程,把问题方程化 3.按照实际逻辑设置初始条件和边界情况 4.确定计算顺序并求解 结合实例感受下: 你有三种硬币,分别 ...

  9. java语言程序设计第三版答案郎波著,都是精髓!

    Java基础 1Java语言的三大特性 2.Java语言主要特性 3. JDK和JRE有什么区别 4.Java基本数据类型及其封装类 5.如果main方法被声明为private会怎样? 6.说明- - ...

最新文章

  1. 转载:left join和left semi join的联系和区别
  2. linux内核对伙伴系统的改进--migrate_type
  3. 改变照片分辨率的软件_AI黑科技竟如此强大,模糊照片无损放大600%变得更清晰!...
  4. 【热点报道】2013eoe移动开发者大会圆满落幕
  5. WebSocket和Java
  6. SpringBoot解决ajax跨域问题
  7. erlang安装_消息中间件(八)- RabbitMQ - 安装
  8. 在阿里工作5年了,斗胆谈谈我认为的高级开发到底应该是怎样的?
  9. RxJava系列(二)Scheduler线程调度器
  10. VB 域名转换IP地址函数
  11. 浅谈Event Loop
  12. 网络爬虫---微信爬虫
  13. 天津电动自行车外贸出口认证GCC合格证
  14. Excel如何把同类数据合并到同一单元格
  15. 亚马逊五点描述是什么?有什么作用?
  16. 爬虫玩得好,牢饭吃到饱?这3条底线千万不能碰!
  17. linux14.04设置DNS,Ubuntu 16.04修改配置静态IP和DNS
  18. 【水】HDU2075 A|B?
  19. NIR近红外光谱简介
  20. 2023年城投债投资研究报告

热门文章

  1. 启动一个java项目http状态 500 - 内部服务器错误_Java web服务器假死分析
  2. Oracle服务扫描工具Oscanner
  3. java调优 视频_Java优化高性能高并发+高并发程序设计视频教程
  4. winform是如何自动弹出软键盘_自媒体广告如何创造出更大的价值?
  5. ​脑机技术可以应用于军事领域,有助于评估士兵的认知状态
  6. B站开源动漫画质修复模型,超分辨率无杂线无伪影,还是二次元最懂二次元
  7. 昔日“东方神童”逝世,4岁读完初中课程,17岁中科院硕博连读,网友:湖南华容的传说...
  8. 48万!百度推出全球最便宜RoboTaxi,赚钱能力2倍于人类网约车
  9. 初二男生为外婆发明认人神器,帮认亲人,20分钟召唤回家,并报出家庭地址...
  10. 在阿里做科研是一种什么感受?