1 面向对象思想

1.1 面向对象

Java语言是一种面向对象的程序设计语言,而面向对象思想是一种程序设计思想,以对象为基础完成各种操作,强调的是对象。它是基于面向过程的。
这里的对象泛指现实中一切事物,每种事物都具备自己的属性行为。面向对象思想就是在计算机程序设计过程中,参照现实中事物,将事物的属性特征、行为特征抽象出来,描述成计算机事件的设计思想。

它区别于面向过程思想,强调的是通过调用对象的行为来实现功能,而不是自己一步一步的去操作实现。

2种编程思想的区别:

  • 面向过程:强调步骤。

  • 面向对象:强调对象。

洗衣服:

  • 面向过程:把衣服脱下来–>找一个盆–>放点洗衣粉–>加点水–>浸泡10分钟–>揉一揉–>清洗衣服–>拧干–>晾起来
  • 面向对象:把衣服脱下来–>打开全自动洗衣机–>扔衣服–>按钮–>晾起来

特点

面向对象思想是一种更符合我们思考习惯的思想,它可以将复杂的事情简单化,并将我们从执行者变成了指挥者。面向对象的语言中,包含了三大基本特征,即封装、继承和多态。

1.2 类和对象

什么是类

  • :是一组相关属性行为的集合。可以看成是一类事物的模板,使用事物的属性特征和行为特征来描述该类事物。

现实中,描述一类事物:

  • 属性:就是该事物的状态信息。
  • 行为:就是该事物能够做什么。

什么是对象

  • 对象:是一类事物的具体体现。对象是类的一个实例(对象并不是找个女朋友),必然具备该类事物的属性和行为。

现实中,一类事物的一个实例:一只小猫。

举例:一只小猫。

​ 属性:tom、5kg、2 years、yellow。
​ 行为:溜墙根走、蹦跶的跑、喵喵叫。

类与对象的关系

  • 类是对一类事物的描述,是抽象的
  • 对象是一类事物的实例,是具体的
  • 类是对象的模板,对象是类的实体

1.3 类的定义

事物与类的对比

现实世界的一类事物:

属性:事物的状态信息。
行为:事物能够做什么。

Java中用class描述事物也是如此:

成员变量:对应事物的属性
成员方法:对应事物的行为

类的定义格式

public class ClassName {//成员变量//成员方法
}
  • 定义类:就是定义类的成员,包括成员变量成员方法
  • 成员变量:和以前定义变量几乎是一样的。只不过位置发生了改变。在类中,方法外
  • 成员方法:只不过把static去掉

类的定义格式举例:

public class Student {//成员变量String name;//姓名int age;//年龄//成员方法//学习的方法publicvoid study() {System.out.println("好好学习,天天向上");}//吃饭的方法publicvoid eat() {System.out.println("学习饿了要吃饭");}
}

1.4 对象的使用

对象的使用格式

创建对象:

类名 对象名 = new 类名();

使用对象访问类中的成员:

对象名.成员变量;
对象名.成员方法();

成员变量的默认值

数据类型 默认值
基本类型 整数(byte,short,int,long) 0
浮点数(float,double) 0.0
字符(char) ‘\u0000’
布尔(boolean) false
引用类型 数组,类,接口 null

1.5 对象内存图

一个对象,调用一个方法内存图

通过上图,在栈内存中运行的方法,遵循"先进后出,后进先出"的原则。变量p指向堆内存中的空间,寻找方法信息,去执行该方法。

但是,这里依然有问题存在。创建多个对象时,如果每个对象内部都保存一份方法信息,这就非常浪费内存了,因为所有对象的方法信息都是一样的。

两个对象,调用同一方法内存图

对象调用方法时,根据对象中方法标记(地址值),去类中寻找方法信息。这样哪怕是多个对象,方法信息只保存一份,节约内存空间。

一个引用,作为参数传递到方法中内存图

引用数据类型作为方法的参数,传递的是地址
引用数据类型作为方法的返回值,返回的是地址

1.6 成员变量和局部变量区别

变量根据定义位置的不同,有不同的名字。如下图所示:

  • 在类中的位置不同 重点

    • 成员变量:类中,方法外
    • 局部变量:方法中或者方法声明上(形式参数)
  • 作用范围不一样 重点
    • 成员变量:类中
    • 局部变量:方法中
  • 初始化值的不同 重点
    • 成员变量:有默认值
    • 局部变量:没有默认值。必须先定义,赋值,最后使用
  • 在内存中的位置不同 了解
    • 成员变量:堆内存
    • 局部变量:栈内存
  • 生命周期不同 了解
    • 成员变量:随着对象的创建而存在,随着对象的消失而消失
    • 局部变量:随着方法的调用而存在,随着方法的调用完毕而消失

面向对象---类与对象相关推荐

  1. Python之面向对象类和对象

    Python之面向对象类和对象 定义一个类:class 定义类的语法: class Test(object):"""类里定义一类事物共同的技能.可以是变量,也可是函数.& ...

  2. php面向对象——类和对象

    php面向对象--类和对象 1.类和对象 <?php //定义一个类: class A{public $name="John"; //定义一个普通属性static $age= ...

  3. java面向对象-类和对象

    Java面向对象笔记 文章目录 Java面向对象笔记 java面向对象 类和对象 什么是类 定义 创建和使用 公式 构造方法 什么是构造方 怎么定义和使用构造方法 实列 This关键字 什么是成员变量 ...

  4. 笔记整理2----Java语言基础(二)06 断点调试与数据加密+07 面向对象-类与对象+08 java常用API-基础+09 java集合+10 IO流-基础

    06 断点调试与数据加密+07 面向对象-类与对象+08 java常用API-基础+09 java集合+10 IO流-基础 第06天 java基础语法 今日内容介绍  Eclipse断点调试  基 ...

  5. Python基础day07【文件读写、文件夹操作、面向对象(类、对象)】

    视频.源码.课件.软件.笔记:超全面Python基础入门教程[十天课程]博客笔记汇总表[黑马程序员]   目录 01.复习 1.1.递归函数参数问题 1.2.格式化输出位数 1.3.extend函数解 ...

  6. javaSE各阶段练习题---面向对象-类与对象、封装、构造方法(1

    1-8题抽查提问,能够使用给自己的语言表述 1.什么是面向对象?1.是一种编程思想JAVA语言是一种面向对象的程序设计语言,而面向对象思想是一种程序设计思想.我们在面向对象思想的指引下, 使用java ...

  7. C++学习笔记:(一)面向对象 类与对象

    目录 1.面向对象的概念 2.类与对象 2.1 类的定义格式 2.2 对象的定义与使用 2.3 构造函数和析构函数 2.4 内存的动态分配 2.5 对象数组和对象指针 2.6 函数参数的传递机制 2. ...

  8. Python学习9 面向对象 类和对象

    面向对象和面向过程 类和对象 类的设计 类的创建 self:相当于当前对象:类似于Java中的this 类的创建和使用: #类的命名:每个单词首字母大写 class Dog:#属性name = 'do ...

  9. 8.面向对象-----类和对象

    一.面向对象的三条主线 1.Java类及类的成员:属性.方法.构造器:代码块.内部类 2.面向对象的大特征:封装性.继承性.多态性.(抽象性) 3.其它关键字:this.super.static.fi ...

最新文章

  1. iOS保存model数据(自定义Model 可以存放到本地)
  2. ios app提交之前需要哪几个证书
  3. 详解java中Thread类,线程和进程的基本区别,多线程的好处,线程的五个生命周期,主线程和IDEA创建的Monitor Ctrl-Break守护线程;优雅地终止线程。死锁的产生
  4. java 8 Streams简介
  5. 利用expect实现自动化操作
  6. 经典逻辑编程题(本文用python实现)
  7. 魅族15无法连接计算机,还在为数据丢失而烦恼?魅族15告诉你什么叫做碎屏无忧...
  8. espcms /public/class_connector.php intval truncation Vul Arbitrary User Login
  9. windows批处理执行多条命令
  10. Hive(四)——数据操作
  11. 软件基本功:工作目标经常变化,要及时跟进
  12. [NOIp2017 DG Day 2 T1] 奶酪
  13. phpcms开发微信小程序api
  14. Python笔记之Django网页模板的继承block(挖坑填坑、HTML转义)
  15. 200道常见java知识点总结,问题+答案(转)
  16. 显著性水平 置信度 置信区间 实例讲解
  17. CSS 网格 Gird 布局
  18. 老师的经典口头禅,这一句最扎心
  19. 一文讲透 CentOS 开机流程
  20. UE4中动画优化与压缩

热门文章

  1. 【转】 ABAP中的异常处理 - TRY CATCH的使用实例
  2. ABAP中的系统变量SY-INDEX与SY-TABIX
  3. IT人员健康信号之鼻炎养护
  4. 关于收到部分还款SAP系统两种处理方法的说明和比较
  5. alv导出本地文件DUMP
  6. excel对比_质量管理误区:SPC软件与微软Excel的应用对比
  7. linux crontab环境变量,Linux下crontab内环境变量与Shell环境变量的关系【转】
  8. linux怎么用两个进程传值,linux下的C开发14,可执行程序如何传递参数?模拟shell执行命令...
  9. php节点对象,JavaScript_JavaScript中访问节点对象的方法有哪些如何使用,JavaScript中访问节点对象的方法 - phpStudy...
  10. vue引入包mysql_vue中import引入文件和使用的方式总结