7 Java中的类与对象

面向对象概

面向对象编程 OOP(Object Oriented Programming)是当今主流的程序设计思想,已经取代了过程化程序开发技术,Java 是完全面向对象编程语言,所以必须熟悉面向对象才能够编写 Java 程序。

​ 对象是Java程序的核心,在Java程序中“万事万物皆为对象”

面向对象有以下特点:

(1)面向对象是一种常见的思想,比较符合人们的思考习惯;

(2)面向对象可以将复杂的业务逻辑简单化,增强代码复用性;

(3)面向对象具有抽象、封装、继承、多态等特性。

面向对象的编程语言主要有:C++、Java、C#等。

思考:如何面向对象编程?

面向过程

分析解决问题的所需要的步骤,然后我们用方法来一步步的调用实现

  • 举例1:把大象放入冰箱

    (1)打开冰箱门

    (2)将大象放入冰箱

    (3)关上冰箱门

  • 举例2:象棋游戏设计分析

    (1)开始游戏

    (2)绘制棋盘

    (3)红方走棋

    (4)绘制棋盘

    (5)判断输赢

    (6)黑方走棋

    (7)绘制棋盘

    (8)判断输赢

在这里插入图片描述

面向过程的思想是注重做事的过程

面向对象编程

  • 举例1:把大象放入冰箱

    (1)冰箱:具有开门关门等行为

    (2)大象:能够走路

    面向对象关注的是:同一类事物具有的属性和行为,比如冰箱、大象是一类事物,他们都具有自己的属性和行为,强调的是具体的事物,而非过程

  • 举例2:象棋游戏设计分析

    (1)棋盘:是什么样的,有哪些特有行为,如绘制棋盘

    (2)棋子:分红方和绿方,棋子的属性,和能够走动的行为

    (3)规则系统:判定输赢

    在这里插入图片描述

    面向对象以功能划分,而非步骤

    模拟世界万事万物来进行编程,面向对象可以理解为万物皆对象

类和对象关系

对象和类是分不开的,必须首先定义类才能有对象,每一个JAVA里面的class(类)都对应了我们现实生活中某一类事物的一个抽象

把某些具有相同的属性和行为的事物抽象成一类

  1. 属性:颜色,眼睛,耳朵,体重

    行为:叫,睡觉,摇尾巴

  2. 车:

    属性:颜色,轮子,方向盘

    行为:跑,刹车

  • 类就是一个概念,如:狗
  • 对象就是一个具体的实物,如:小灰灰,小白白
  • 类可以看成一个模板,对象(实例)是根据这个模板所产生的样本
  • 类是抽象的,对象(实例)是具体的

类的定义与使用

  1. 类的定义与使用

    public class Car{    }
    
    public class Dog{   }  
    
  2. 对象,对象的创建, java如何描述对象

  3. 匿名对象

    栈中没有一个指向它的引用,所以是无意义的

对象练习

写一个描述老虎的类

  • 具有的属性:颜色、身高、体重
  • 具有的行为:吃东西、睡觉、跑
  • 并根据该类产生2个实例对象

对象创建时的内存结构

  1. 堆空间

    Java的堆是一个运行时数据区,存放用new产生的对象,堆会分配一定空间给新的对象

    堆是由垃圾回收来负责的,堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,因为它是在运行时动态分配内存的,

    Java的垃圾收集器会自动收走这些不再使用的数据。

  2. 栈空间:

    存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是存放在堆中

    优点:存取速度比堆要快,仅次于寄存器,栈数据可以共享。

    缺点:存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。

    栈中主要存放一些基本类型的变量数据(int, short, long, byte, float, double, boolean, char)和对象句柄(引用)。

  3. 内存结构图

    在这里插入图片描述

变量作用域

变量的作用域分为四个级别:类级、对象实例级、方法级、块级

在这里插入图片描述

  1. 类级别

    类级变量又称全局级变量或静态变量,需要使用static关键字修饰。

    类级变量在类定义后就已经存在,占用内存空间,可以通过类名来访问,不需要实例化

  2. 对象实例级别

    对象实例级变量就是成员变量,在类中定义,可以不赋值,如果不赋值都会有默认,存储在堆空间中,实例化后才会分配内存空间,才能访问。

    生命周期:随着对象的消失而消失

  3. 方法内部级别

    方法级变量就是在方法内部定义的变量,就是局部变量,必须赋值才能使用,存储在栈中

    生命周期:定义的时候产生,当前方法括号语句执行完成即消失

  4. 块级别

    定义在语句块中,不常用

    访问范围:

    方法内部除了能访问方法级的变量,还可以访问类级和实例级的变量。

    块内部能够访问类级、实例级变量,如果块被包含在方法内部,它还可以访问方法级的变量。

    方法级和块级的变量必须被显示地初始化,否则不能访问。

本章课后作业

  1. 详细记住类与对象的关系,创建对象
  2. 掌握面向对象编程,能够随手使用类来描述万事万物
  3. 掌握对象创建时内存分配情况
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

君哥聊编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值