热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

面向对象编程(什么是对象)——java

一、什么是面向对象,什么是面向过

一、什么是面向对象,什么是面向过

面向对象编程(什么是对象)——java - 文章图片

 

 

 二、引入对象和类的概念

  对象:是具体事物 如:小明 汽车

  类: 是对对象的抽象(抽象 抽出象的部分) Person

  先有具体的对象,然后抽象各个对象之间的部分,归纳出类通过类再认识其他对象

生活案例
类是一个图纸 对象是根据该图纸制造多个实物
类是一个模具 对象是使用模具制造的多个铸件(月饼模子 )
类是上海大众汽车,对象就是大家购买的一辆辆具体上海大众汽车

 

三、 认识类和对象

  ? 需求:使用面向对象思想表示人的日常生活

  ? 分析

? 由多个具体的人(小红、小张、老李)抽象出所有的公共特征
? 静态特征:姓名、年龄、性别
? 动态行为:吃饭、休息、自我介绍

? 实现

? 创建抽象的人-----Person类
? 创建具体的人-----对象

四、类和对象的总结

? 对象和类的关系:

? 特殊到一般,具体到抽象。
? 类可以看成一类对象的模板,对象可以看成该类的一个具体实例。
? 类是用于描述同一类形的对象的一个抽象的概念,类中定义了这一类对象所应具有的静态和动
态属性

? 怎么定义类(类的组成)

? 属性 field
? 方法 method
? 构造方法 construtor
? 其他:代码块 静态代码块 内部类

? 属性定义格式:

? [修饰符] 属性类型 属性名 = [默认值]

? 怎么创建对象

? 类名 对象名 = new 类名();
? Person p1=new Person();

? 调用类的属性和方法

? 对象名.成员变量
? 对象名.成员方法

五、 局部变量和成员变量

    成员变量:

          1、成员变量定义在类中,在整个类中都可以被访问。

          2、成员变量随着对象的建立而建立,随着对象的消失而消失,存在于对象所在的堆内存中。

          3、成员变量有默认初始化值。

      局部变量:

          1、局部变量只定义在局部范围内,如:函数内,语句内等,只在所属的区域有效。

          2、局部变量存在于栈内存中,作用的范围结束,变量空间会自动释放。

          3、局部变量没有默认初始化值 

      在使用变量时需要遵循的原则为:就近原则

      首先在局部范围找,有就使用;接着在成员位置找。

 

六、成员变量和类变量的区别:

   1、两个变量的生命周期不同

      成员变量随着对象的创建而存在,随着对象的回收而释放。

      静态变量随着类的加载而存在,随着类的消失而消失。

   2、调用方式不同

      成员变量只能被对象调用。

      静态变量可以被对象调用,还可以被类名调用。

   3、别名不同

      成员变量也称为实例变量。

      静态变量也称为类变量。

   4、数据存储位置不同

      成员变量存储在堆内存的对象中,所以也叫对象的特有数据。

      静态变量数据存储在方法区(共享数据区)的静态区,所以也叫对象的共享数据。

 

七、this关键字

? this的作用:

? this表示的是当前对象本身,
? 更准确地说,this代表当前对象的一个引用。

? 普通方法中使用this。

? 区分类成员属性和方法的形参.
? 调用当前对象的其他方法(可以省略)
? 位置:任意

? 构造方法中使用this。

? 使用this来调用其它构造方法
? 位置:必须是第一条语句
? this不能用于static方法。

 

八、static关键字

? 在类中,用static声明的成员变量为静态成员变量 ,或者叫做: 类属性,类变量.

? 它为该类的公用变量,属于类,被该类的所有实例共享,在类被载入时被显式初始化,
? 对于该类的所有对象来说,static成员变量只有一份。被该类的所有对象共享!!
? 可以使用”对象.类属性”来调用。不过,一般都是用“类名.类属性”
? static变量置于方法区中!

? 用static声明的方法为静态方法

? 不需要对象,就可以调用(类名.方法名)
? 在调用该方法时,不会将对象的引用传递给它,所以在static方法中不可访问非static的成员。
? 静态方法不能以任何方式引用this和super关键字

 

 

 


推荐阅读
  • 问题描述现在,不管开发一个多大的系统(至少我现在的部门是这样的),都会带一个日志功能;在实际开发过程中 ... [详细]
  • 2023年,Android开发前景如何?25岁还能转行吗?
    近期,关于Android开发行业的讨论在多个平台上热度不减,许多人担忧其未来发展。本文将探讨当前Android开发市场的现状、薪资水平及职业选择建议。 ... [详细]
  • 函子(Functor)是函数式编程中的一个重要概念,它不仅是一个特殊的容器,还提供了一种优雅的方式来处理值和函数。本文将详细介绍函子的基本概念及其在函数式编程中的应用,包括如何通过函子控制副作用、处理异常以及进行异步操作。 ... [详细]
  • 二维码的实现与应用
    本文介绍了二维码的基本概念、分类及其优缺点,并详细描述了如何使用Java编程语言结合第三方库(如ZXing和qrcode.jar)来实现二维码的生成与解析。 ... [详细]
  • JUnit下的测试和suite
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 我的读书清单(持续更新)201705311.《一千零一夜》2006(四五年级)2.《中华上下五千年》2008(初一)3.《鲁滨孙漂流记》2008(初二)4.《钢铁是怎样炼成的》20 ... [详细]
  • 问题场景用Java进行web开发过程当中,当遇到很多很多个字段的实体时,最苦恼的莫过于编辑字段的查看和修改界面,发现2个页面存在很多重复信息,能不能写一遍?有没有轮子用都不如自己造。解决方式笔者根据自 ... [详细]
  • 对于编程爱好者而言,理解PHP的强大功能及其在Web开发中的应用至关重要。本文旨在分享作者在学习PHP过程中的实际经验和技巧,帮助初学者找到学习编程的有效途径。 ... [详细]
  • After Effects 十大实用可复制表达式
    本文介绍了After Effects中十个最常用的可复制表达式,这些表达式能够帮助用户快速实现各种动态效果,提升工作效率。 ... [详细]
  • 本文是对《敏捷软件开发:原则、模式与实践》一书的深度解析,书中不仅探讨了敏捷方法的核心理念及其应用,还详细介绍了面向对象设计的原则、设计模式的应用技巧及UML的有效使用。 ... [详细]
  • H5技术实现经典游戏《贪吃蛇》
    本文将分享一个使用HTML5技术实现的经典小游戏——《贪吃蛇》。通过H5技术,我们将探讨如何构建这款游戏的两种主要玩法:积分闯关和无尽模式。 ... [详细]
  • 在1995年,Simon Plouffe 发现了一种特殊的求和方法来表示某些常数。两年后,Bailey 和 Borwein 在他们的论文中发表了这一发现,这种方法被命名为 Bailey-Borwein-Plouffe (BBP) 公式。该问题要求计算圆周率 π 的第 n 个十六进制数字。 ... [详细]
  • 本文详细介绍了C++中的构造函数,包括其定义、特点以及如何通过构造函数进行对象的初始化。此外,还探讨了转换构造函数的概念及其在不同情境下的应用,以及如何避免不必要的隐式类型转换。 ... [详细]
  • Java中如何判断一个对象是否为Long类型
    本文介绍了一种在Java中判断对象是否属于Long类型的方法,通过定义一个特定的方法来实现这一功能,该方法能够准确地识别并返回结果。 ... [详细]
  • spring boot使用jetty无法启动 ... [详细]
author-avatar
轩风羽_609
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有