对象在需求中的使用

在具体问题中如何使用面向对象去分析问题,和如何使用面向对象。

以把大象装冰箱为例进行分析:

在针对具体的需求,可以使用名词提炼的办法进行分析,寻找具体的对象。
需求:把大象装冰箱里
对象:大象、冰箱
分三步:
    1、打开冰箱门
    2、将大象装进去
    3、关闭冰箱门
分析发现打开、装、关闭都是冰箱的功能。即冰箱对象具备如下功能:
    1)冰箱打开
    2)冰箱存储
    3)冰箱关闭
用伪代码描述,上述需求中有两个具体的事物 大象 和  冰箱
描述大象:
    class 大象
        {
        }
描述冰箱
    class冰箱
        {
            void 打开(){}
            void 存储(大象){}
            void 关闭(){}
        }
当把具体的事物描述清楚之后,需要使用这些具体的事物,Java使用具体的事物,需要通过new关键字来创建这个事物的具体实例。
使用对象:
    1、创建冰箱的对象
        冰箱 bx = new 冰箱();  
    2、调用冰箱的功能
        对象.功能();
        bx.打开();
        bx.存储(new 大象());
        bx.关闭();
总结:
1、先按照名词提炼问题领域中的对象
2、对对象进行描述,其实就是在明确对象中应该具备的属性和功能
3、通过new的方式就可以创建该事物的具体对象
4、通过该对象调用它以后的功能。

对象在代码中的体现

在分析现实生活中的事物时发现,这些事物都有其具体的特点和功能,这些特点和功能就组成了这个特殊的事物。
描述小汽车。
分析:
事物的特点(属性):
颜色。
轮胎个数。
事物的(功能):
运行。

发现:事物其实就是由特点(属性)和行为(功能)组成的。
可以简单理解:属性就是数值,其实就是变量;行为就是功能,就是方法。
小汽车 {
颜色;
轮胎个数;
运行() { }
}
通过计算机语言Java来描述这个事物。

定义类的格式

public class 类名 {//可编写0至n个属性数据类型 变量名1;数据类型 变量名2;//可编写0至n个方法修饰符 返回值类型 方法名(参数){执行语句;
}
}

汽车类

public class Car {String color;int number;void run() {System.out.println(color + ":" + number);}
}

通过代码的描述,知道类的真正意义就是在描述事物。属性和功能统称为事物中的成员。
事物的成员分为两种:成员属性和成员功能。
成员属性在代码中的体现就是成员变量
成员功能在代码中的体现就是成员方法

把写好的代码测试一下。需要一个可以独立运行类。

创建对象的格式:

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

测试类

public class CarDemo {public static void main(String[] args) { /**  测试:Car类中的run方法。*/// 1,创建Car的对象。给对象起个名字。Car c = new Car();// c是类类型的变量。c指向了一个具体的Car类型的对象。// 2,通过已有的对象调用该对象的功能。格式:对象.对象成员;// 3,可以该对象的属性赋值。c.color = "red";c.number = 4;c.run();}
}

类和对象的区别

面向对象的编程思想力图在程序中对事物的描述与该事物在现实中的形态保持一致。为了做到这一点,面向对象的思想中提出两个概念,即类和对象。其中,类是对某一类事物的抽象描述,而对象用于表示现实中该类事物的个体。接下来通过一个图例来抽象描述类与对象的关系,如下图所示。

在上图中,可以将玩具模型看作是一个类,将一个个玩具看作对象,从玩具模型和玩具之间的关系便可以看出类与对象之间的关系。类用于描述多个对象的共同特征,它是对象的模板。对象用于描述现实中的个体,它是类的实例。从上图中可以明显看出对象是根据类创建的,并且一个类可以对应多个对象,接下来分别讲解什么是类和对象。

经过前面几个知识点的学习,基本上掌握了类是用于描述事物的,类中可以定义事物的属性和行为。而对象是通过描述的这个类,使用new关键字创建出来,通过对象就可以调用该对象具体的属性和功能了。

局部变量和成员变量区别

理解清楚了类和对象之后,发现在描述类的属性定义变量差别不大,唯一区别就是位置发生了改变,那么类中定义的变量,和在方法定义的变量有什么差别呢?总结下面几点异同
区别一:定义的位置不同
    定义在类中的变量是成员变量
    定义在方法中或者{}语句里面的变量是局部变量
区别二:在内存中的位置不同
    成员变量存储在对内存的对象中
    局部变量存储在栈内存的方法中
区别三:声明周期不同
    成员变量随着对象的出现而出现在堆中,随着对象的消失而从堆中消失
    局部变量随着方法的运行而出现在栈中,随着方法的弹栈而消失
区别四:初始化不同
    成员变量因为在堆内存中,所有默认的初始化值

局部变量没有默认的初始化值,必须手动的给其赋值才可以使用。

本文结。

怎么来理解java类和对象的区别相关推荐

  1. Java类和对象(如何理解类和对象)

    Java类和对象 一.什么是对象? 1.什么是对象的属性? 2.什么是对象的行为 二.什么是类? 三. 类和对象的关系 四.类的定义 1.类的定义格式 2.类的定义示例 五.对象的使用 1.对象的创建 ...

  2. java类与对象实验_JAVA类与对象实验报告

    <JAVA类与对象实验报告>由会员分享,可在线阅读,更多相关<JAVA类与对象实验报告(6页珍藏版)>请在人人文库网上搜索. 1.面向对象程序设计实验报告实验三.类与对象(1) ...

  3. 杨校老师课堂之Java类与对象、封装、构造方法

    杨校老师课堂之Java类与对象.封装.构造方法 本篇文章内容如下: 面向对象 类与对象 三大特征--封装 构造方法 教学目标 能够理解面向对象的思想 能够明确类与对象关系 能够掌握类的定义格式 能够掌 ...

  4. 这篇文章绝对让你深刻理解java类的加载以及ClassLoader源码分析

    前言 package com.jvm.classloader;class Father2{public static String strFather="HelloJVM_Father&qu ...

  5. java类和对象在内存的表现形式

    Java内存分配与管理是Java的核心技术之一,不管学习任何一门语言,我们要知其然,知其所以然,本文主要分析下Java中类和对象在内存中的表现形式,方便我们对其有更深了解.一般Java在内存分配时会涉 ...

  6. 解析 Java 类和对象的初始化过程

    跳转到主要内容 中国 [ 选择 ] dW 全部内容--------------  AIX and UNIX  Info Mgmt  Lotus  Rational  WebSphere-------- ...

  7. Java私塾跟我学系列——JAVA篇 第四章Java类和对象

    教学目标: i面向对象基础 i掌握对象的三大特性 i掌握Java类的构建 i掌握如何使用Java类 i理解引用类型 i理解按值传递和按引用传递 i深入理解变量 i掌握包装类 i理解类型转换 i理解Ja ...

  8. java 类与对象实验报告_java类与对象实验报告

    java类与对象实验报告 西 安 邮 电 大 学(计算机学院)课内实验报告实验名称: 类与对象 专业名称: 计算机科学与技术班 级: 计科1405班 学生姓名: 高宏伟 学 号: 04141152指导 ...

  9. JAVA类和对象(1)

    JAVA类和对象 1.类和对象的初步认识 2.类的实例化 3.类的成员 3.1 字段/属性/成员变量 3.2 null 3.3 引用的指向 3.3 方法 (method) 3.4 static关键字 ...

最新文章

  1. iOS7系统iLEX RAT冬青鼠安装教程:无需刷机还原纯净越狱系统
  2. Java小工具:TimingTools
  3. htmlbuilder php phantomjs
  4. 中石油训练赛 - Plan B(点双缩点+树形dp)
  5. 多级嵌套json格式
  6. Docker 搭建pxc集群 + haproxy + keepalived 高可用(二)
  7. 单独安装想要的office_安装OFFICE不再求人,最省心的方法
  8. python wordpress xmlrpc_python-markdown自动发送wordpress文章(python-xmlrpc-wordpress)
  9. mybatis Table book.t_abmin not find
  10. 绑定gridview去掉标题文字粗体。
  11. linux服务器开启公网访问_如何在外网用SSH访问内网LINUX服务器?
  12. Sqlserver交叉连接cross join(笛卡尔积)
  13. 每日新闻丨阿里巴巴香港IPO指引价每股176港元左右;全球超级计算机500强榜单出炉...
  14. Jzoj5424 凤凰院凶真
  15. 子网掩码及其与IP地址、网关的关系
  16. html弄出油画效果,使用HTML5 Canvas实现仿PS图像油画滤镜特效
  17. postgres数据库表空间收缩之pg_squeeze,pg_repack
  18. MATLAB作图时值为0的点不画出来
  19. 用Python批量下载DACC的MODIS数据
  20. (一)改掉这些坏习惯,还怕写不出健壮的代码?

热门文章

  1. 【ArcGIS自定义脚本工具】批量重投影栅格脚本
  2. “佟掌柜”变身功夫高手 闫妮《大灌篮》出彩
  3. HTML有displaynone无法隐藏,display:none显示和隐藏
  4. 当Python爬虫遇到JS加密
  5. HDU1408:盐水的故事
  6. xposed定位插件_GpsHook实现模拟定位,手机需安装Xposed类框架
  7. 股票量化投资目前主要有哪些主流交易方法?
  8. java基于RXTXcomm.jar的串口通信
  9. java基础之java语言基础
  10. 详细讲解【拓展欧几里得】