3.2面向对象

2023-10-27

  1. 面向对象与面向过程的区别:

      面向过程指的是工作过程如何执行,而面向对象指的是工作该让谁来完成。

 

 

  1. 面向对象三大思想:

        OOA:面向对象分析(Object Oriented Analysis)  

   OOD:面向对象设计(Object Oriented Design)  

   OOP:面向对象程序(Object Oriented Programming

  1. 面向对象三大特征:

       封装性:所有的内容对外部不可见

继承性:将其他的功能继承下来继续发展

多态性:方法的重载本身就是一个多态性的体

  1. 对象的创建与使用:

        类是一群对象的特征,使用时必须落实到类。

          Class  对象 = new  Class();

           访问属性  对象.属性

访问方法:对象.方法();

5.Java栈的区域很小 , 大概2m左右 , 特点是存取的速度特别快

 

栈存储的特点是, 先进后出

 

 

6. 存储速度快的原因:

 

    栈内存, 通过 '栈指针' 来创建空间与释放空间 !

 

    指针向下移动, 会创建新的内存, 向上移动, 会释放这些内存 !

 

    这种方式速度特别快 , 仅次于PC寄存器 !

 

    但是这种移动的方式, 必须要明确移动的大小与范围 ,

 

    明确大小与范围是为了方便指针的移动 , 这是一个对于数据存储的限制, 存储的数据大小是固定的 , 影响了程序 的灵活性 ~

 

    所以我们把更大部分的数据 存储到了堆内存中

 

  1. 栈内存储的是: 基本数据类型的数据 以及 引用数据类型的引用!

     

         例如:

 

             int  a  =10;

 

            Person p = new Person();

 

           10存储在栈内存中 ,  第二句代码创建的对象的引用(p)存在栈内存中

8.堆:存放的是类的对象。所有类的对象都是通过new关键字创建

 

new关键字, 是指告诉JVM , 需要明确的去创建一个新的对象 , 去开辟一块新的堆内存空间: 堆内存与栈内存不同, 优点在于我们创建对象时 , 不必关注堆内存中需要开辟多少存储空间 , 也不需要关注内存占用 时长 !

 

堆内存中内存的释放是由GC(垃圾回收器)完成的

 

 

垃圾回收器 回收堆内存的规则:

 

当栈内存中不存在此对象的引用时,则视其为垃圾 , 等待垃圾回收器回收 !

  1. PC寄存器:在Java程序中, 每个线程启动时, 都会创建一个PC寄存器 !,它保存的是当   前正在执行的JVM指令的地址。
  2.  构造方法

      Person p0 = new Person();

  

      作用:用于对象初始化。

执行时机:在创建对象时,自动调用

特点:所有的Java类中都会至少存在一个构造方法      

如果一个类中没有明确的编写构造方法,  则编译器会自动生成一个无参的构造方法, 构造方法中没有任何的代 码!          

如果自行编写了任意一个构造器, 则编译器不会再自动生成无参的构造方法。

定义的格式:

与普通方法基本相同, 区别在于:  方法名称必须与类名相同, 没有返回值类型的声明 !

案例:

     public class Demo3{

       public static void main(String[] args){

           Person p = new Person();  

           p = new Person();      

           p = new Person();         

           p = new Person();

       }

   }   

 class Person{   

     public Person(){  

          System.out.println("对象创建时,此方法调用");     

   }   

 }

建议自定义无参构造方法,不要对编译器形成依赖,避免错误发生。

当类中有非常量成员变量时,建议提供两个版本的构造方法,一个是无参构造方法,一个是全属性做参数的构造方法。

当类中所有成员变量都是常量或者没有成员变量时,建议不提供任何版本的构造

  1. 方法的重载:

      方法的名称相同,参数类型或参数长度不同,可以完成方法的的重载!重载与返回值无关。

方法的重载 ,可以让我们在不同的需求下, 通过传递不同的参数调用方法来完成具体的功能。

方法的重载与重写的区别:重载强调的参数的不同,重写是方法体得重写。

  1. 匿名对象

没有对象的名称,就是匿名对象。

匿名对象只能使用一次,因为没有任何的对象引用,所以将称为垃圾,等待被G·C回收。 只使用一次的对象可以通过匿名对象的方式完成,这一点在以后的开发中将经常使用到

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

3.2面向对象 的相关文章

  • 为什么 i++ 不是原子的?

    Why is i Java 中不是原子的 为了更深入地了解 Java 我尝试计算线程中循环的执行频率 所以我用了一个 private static int total 0 在主课中 我有两个线程 主题 1 打印System out prin
  • Java中反射是如何实现的?

    Java 7 语言规范很早就指出 本规范没有详细描述反射 我只是想知道 反射在Java中是如何实现的 我不是问它是如何使用的 我知道可能没有我正在寻找的具体答案 但任何信息将不胜感激 我在 Stackoverflow 上发现了这个 关于 C
  • Java EE:如何获取我的应用程序的 URL?

    在 Java EE 中 如何动态检索应用程序的完整 URL 例如 如果 URL 是 localhost 8080 myapplication 我想要一个可以简单地将其作为字符串或其他形式返回给我的方法 我正在运行 GlassFish 作为应
  • Final字段的线程安全

    假设我有一个 JavaBeanUser这是从另一个线程更新的 如下所示 public class A private final User user public A User user this user user public void
  • Android MediaExtractor seek() 对 MP3 音频文件的准确性

    我在使用 Android 时无法在eek 上获得合理的准确度MediaExtractor 对于某些文件 例如this one http www archive org download emma solo librivox emma 01
  • 多个 Maven 配置文件激活多个 Spring 配置文件

    我想在 Maven 中构建一个环境 在其中我想根据哪些 Maven 配置文件处于活动状态来累积激活多个 spring 配置文件 目前我的 pom xml 的相关部分如下所示
  • JavaMail 只获取新邮件

    我想知道是否有一种方法可以在javamail中只获取新消息 例如 在初始加载时 获取收件箱中的所有消息并存储它们 然后 每当应用程序再次加载时 仅获取新消息 而不是再次重新加载它们 javamail 可以做到这一点吗 它是如何工作的 一些背
  • 路径中 File.separator 和斜杠之间的区别

    使用有什么区别File separator和一个正常的 在 Java 路径字符串中 与双反斜杠相反 平台独立性似乎不是原因 因为两个版本都可以在 Windows 和 Unix 下运行 public class SlashTest Test
  • 斯坦福 NLP - 处理文件列表时 OpenIE 内存不足

    我正在尝试使用斯坦福 CoreNLP 中的 OpenIE 工具从多个文件中提取信息 当多个文件 而不是一个 传递到输入时 它会给出内存不足错误 All files have been queued awaiting termination
  • 从 127.0.0.1 到 2130706433,然后再返回

    使用标准 Java 库 从 IPV4 地址的点分字符串表示形式获取的最快方法是什么 127 0 0 1 到等效的整数表示 2130706433 相应地 反转所述操作的最快方法是什么 从整数开始2130706433到字符串表示形式 127 0
  • 使用Caliper时如何指定命令行?

    我发现 Google 的微型基准测试项目 Caliper 非常有趣 但文档仍然 除了一些示例 完全不存在 我有两种不同的情况 需要影响 JVM Caliper 启动的命令行 我需要设置一些固定 最好在几个固定值之间交替 D 参数 我需要指定
  • AWS 无法从 START_OBJECT 中反序列化 java.lang.String 实例

    我创建了一个 Lambda 函数 我想在 API 网关的帮助下通过 URL 访问它 我已经把一切都设置好了 我还创建了一个application jsonAPI Gateway 中的正文映射模板如下所示 input input params
  • 在 Mac 上正确运行基于 SWT 的跨平台 jar

    我一直致力于一个基于 SWT 的项目 该项目旨在部署为 Java Web Start 从而可以在多个平台上使用 到目前为止 我已经成功解决了由于 SWT 依赖的系统特定库而出现的导出问题 请参阅相关thread https stackove
  • Java执行器服务线程池[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如果我使用 Executor 框架在
  • Google App Engine 如何预编译 Java?

    App Engine 对应用程序的 Java 字节码使用 预编译 过程 以增强应用程序在 Java 运行时环境中的性能 预编译代码的功能与原始字节码相同 有没有详细的信息这是做什么的 我在一个中找到了这个谷歌群组消息 http groups
  • 无法捆绑适用于 Mac 的 Java 应用程序 1.8

    我正在尝试将我的 Java 应用程序导出到 Mac 该应用程序基于编译器合规级别 1 7 我尝试了不同的方法来捆绑应用程序 1 日食 我可以用来在 Eclipse 上导出的最新 JVM 版本是 1 6 2 马文 看来Maven上也存在同样的
  • 如何从指定日期获取上周五的日期? [复制]

    这个问题在这里已经有答案了 如何找出上一个 上一个 星期五 或指定日期的任何其他日期的日期 public getDateOnDay Date date String dayName 我不会给出答案 先自己尝试一下 但是 也许这些提示可以帮助
  • 玩!框架:运行“h2-browser”可以运行,但网页不可用

    当我运行命令时activator h2 browser它会使用以下 url 打开浏览器 192 168 1 17 8082 但我得到 使用 Chrome 此网页无法使用 奇怪的是它以前确实有效 从那时起我唯一改变的是JAVA OPTS以启用
  • JGit 检查分支是否已签出

    我正在使用 JGit 开发一个项目 我设法删除了一个分支 但我还想检查该分支是否已签出 我发现了一个变量CheckoutCommand但它是私有的 private boolean isCheckoutIndex return startCo
  • 使用 xpath 和 vtd-xml 以字符串形式获取元素的子节点和文本

    这是我的 XML 的一部分

随机推荐

  • 【sqli-labs】Less18~Less22

    Less18 User Agent注入 有错误回显 感叹一句 越来越难了 现在只能先看代码再分析怎么注入了 通过代码 发现username和password均做了校验 但是会有一个插入user agent的sql语句 故要通过user ag
  • 怎样计算期货交易盈亏(期货交易盈利怎么算)

    期货怎么算挣了多少钱 1 浮动盈亏 就是结算机构根据当日交易的结算价 计算出会员未平仓合约的浮动盈亏 如果是正值 则表明多头浮动盈利或者空头浮动亏损 负值则刚好相反 公式如下 浮动盈亏 当天的结算价 开仓价格 合约单位 持仓量 手续费 2
  • 解决Android Studio编译报错:找不到NotNull或Nullable

    问题 在java代码中引入 import org jetbrains annotations NotNull import org jetbrains annotations Nullable 导致代码编译不过 找不到这两个类库 按照官方文
  • 后端学习React的第一天

    java后端了十几年了 曾经在学校写过一些jquery的前端代码 后来前端的框架越来越复杂 加上工作以后都是前后端分离的 并且自己美术功底本来也就不咋地 逐渐就放弃了前端技术 专职后端开发了 最近闲来无事 想写点有意思的小程序 发现没有前端
  • 教你如何用fiddler抓取https(详细教程)

    对于想抓取HTTPS的测试初学者来说 常用的工具就是fiddler 可是在初学时 大家对于fiddler如何抓取HTTPS真是伤了脑筋 可能你一步步按着网上的帖子成功了 那当然是极好的 有可能没有成功 这时候你就很抓狂了 我把网络上的教程进
  • python实现文件(夹)剪切

    自己的需求是这样的 有a和b两个目录 a目录下的文件 夹 要剪切到b目录下 我用下面这种形式来表达需求 不然说得比较乱 需求如下 a目录 1 文件 1 是日志文件 1 文件大小 lt 20m 跳过 2 日志文件 gt 20m 复制名加上当天
  • ssh连接不上Linux怎么办

    原因 被防火墙挡掉 ssh服务配置文件中的参数是否拒绝了连接等等 解决方法 一 开启SSH 以root用户登录Linux 打开终端 运行 etc init d sshd restrat 二 关闭防火墙 1 在终端运行 setup 2 选择
  • es6 处理数组的方法汇总

    目录 创建数组静态方法 ES6 Array from Array of 检测数组方法 instanceof Array isArray 迭代器方法 ES6 keys values entries 复制和填充方法 ES6 Array fill
  • 逻辑回归输出的值是真实的概率吗?

    本文只在博客基础上 在三 指数分布族中有所改动 逻辑回归作为被广泛使用的二分类模型 面试中自然是不可缺少的 但要深刻理解逻辑回归又不是那么容易的 比如说 逻辑回归输出的值是0到1之间的值 这个值是真实的概率吗 逻辑回归为什么要选择sigmo
  • layui树形美化_Layui导航树美化 - walkwithdream的个人空间 - OSCHINA - 中文开源技术交流社区...

    左侧导航 使用方法 skin sidebar layui tree skin sidebar li i color rgba 255 255 255 7 display none layui tree skin sidebar li a c
  • 学习Java——为什么java只有值传递

    目录 Java的求值策略 Java中的对象传递 值传递和共享对象传递冲突吗 总结 参考资料 Java的求值策略 前面我们介绍过了传值调用 传引用调用以及传值调用的特例传共享对象调用 那么 Java中是采用的哪种求值策略呢 很多人说Java中
  • 最优乘车问题/dijsktra最短路径算法

    城是一个旅游胜地 每年都有成千上万的人前来观光 为方便游客 巴士公司在各个旅游景点及宾馆 饭店等地都设置了巴士站 并开通了一些单向巴士线路 每条单向巴士线路从某个巴士站出发 依次途径若干个巴士站 最终到达终点巴士站 阿昌最近到 城旅游 住在
  • typora笔记工具使用详解

    Markdown使用笔记 首先本地使用安装教程 百度搜索typora第一个就是官网 地址为 typora下载地址 下载步骤如下 简单使用教程 3 Markdown标题 使用 号可表示 1 6 级标题 一级标题对应一个 号 二级标题对应两个
  • 读取.ini文件乱码的解决办法

    void CGetConfigInfo GetValueByKey QSettings seting const QString key QString value if seting nullptr value seting gt val
  • Memory write error at 0x100000. MMU section translation fault

    在使用vitis2020 2 JTAG调试MZ702P板子的时候会报下面的错误 原因都是启动模式没有设置到JTAG启动或SD启动 记得之前用SDK的时候好像没有这个问题 记录一下 备忘 Downloading Program F FPGA
  • ONVIF对讲功能漫谈

    ONVIF对讲功能漫谈 前言 一 onvif对讲功能和onvif协议关系大吗 二 如何上报设备支持onvif对讲功能呢 三 onvif协议中哪个接口上报音频解码配置 四 献上抓包报文 前言 本篇文章尝试使用提问的方式来分享onvif对讲功能
  • java类型信息与反射

    初步理解 https www cnblogs com xuanlin666 p 10826809 html
  • 使用Electron开发过程中不能使用remote模块解决

    在 electron 渲染进程中引入BrowserWindow报错 const BrowserWindow require electron remote BrowserWindow 报错 Cannot read properties of
  • c++ADO编程-connection对象

    Connection对象的属性有如下几个 1 ConnectionString属性 是连接字符串 通过传递包含一系列由分号分隔的 argument value 语句的详细连接字符串 可指定用于建立连接数据源的信息 连接串格式根据数据源的不同
  • 3.2面向对象

    面向对象与面向过程的区别 面向过程指的是工作过程如何执行 而面向对象指的是工作该让谁来完成 面向对象三大思想 OOA 面向对象分析 Object Oriented Analysis OOD 面向对象设计 Object Oriented De