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

二、引入对象和类的概念

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

  类: 是对对象的抽象(抽象 抽出象的部分) 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关键字

面向对象编程(什么是对象)——java的更多相关文章

  1. Python记录14:面向对象编程 类和对象

    '''现在主流的编程思想有两种,一种是面向对象,一种是面向过程面向过程编程 核心是过程二字,过程指的是解决问题的步骤,即先干什么.再干什么.最后干什么... 基于该思想编写程序就好比再设计一条流水线, ...

  2. Java 面向对象编程——第一章 初识Java

      第一章    初识Java 1.  什么是Java? Java是一种简单的.面向对象的.分布式的.解释的.安全的.可移植的.性能优异的多线程语言.它以其强安全性.平台无关性.硬件结构无关性.语言简 ...

  3. 04面向对象编程-01-创建对象 和 原型理解(prototype、__proto__)

    1.JS中对象的"不同":原型概念 从Java中我们可以很好地去理解 "类" 和 "实例" 两个概念,可是在JavaScript中,这个概念 ...

  4. python 面向对象编程、获取对象信息

    面向对象与面向过程 参考链接:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0 ...

  5. 13_Python的面向对象编程-类class,对象object,实例instance

    1.面向对象概述 1.类是用来描述对象的工具,把拥有相同属性和行为的对象分为一组     2.对象是由类实例化出来的一个具体的对象         属性: 对象拥有的名词,用变量表示         ...

  6. PHP面向对象编程学习之对象基础

    php虽然是一门学习起来非常简单的语言,但是这门语言也包含了对面向对象编程的支持.尤其是随着php5的发布,php对面向对象的支持有了很大的进步.最近学习了一下php的面向对象编程,不禁感慨,面向对象 ...

  7. python -- 面向对象编程(类、对象)

    一.类 类是用来描述具有相同的属性和方法的对象的集合. 它定义了该集合中每个对象共同拥有的属性和方法. 类是一个独立的单位,它有一个类名,其内部包括成员变量和成员方法,分别用于描述对象的属性和行为. ...

  8. Python - 面向对象编程 - 什么是对象和类

    面向对象编程 Object Oriented Programming,简称 OOP,是一种程序设计思想 OOP 把对象作为程序的基本单元,一个对象包含了数据和操作数据的方法 Python里面有一句话: ...

  9. 转载:Javascript面向对象编程原理 -- 理解对象

    源地址:http://www.html-js.com/article/1717 虽然JavaScript中已经自带了很多内建引用类型,你还是会很频繁的需要创建自己的对象.JavaScript编程的很大 ...

  10. 「JavaScript面向对象编程指南」对象

    对象的属性名可加上引号,下面三行代码所定义的内容是完全相同的 var hero = { occupation : 1 }; var hero = { "occupation" : ...

随机推荐

  1. 暑假第四周总结(HDFS编程实践,安装HBASE)

    本周根据书上以及教程的提示,对HDFS进行了编程实践,将教程所给的代码(判断文件是否存在,创建文件,读取文件)进行了应用,根据视频的讲解,对一些简单的语句有了一定的了解,但还是比较生疏.另外还根据提示 ...

  2. 【存储类、链接、存储管理】分配内存:malloc()、free()

    一.使用库函数:malloc()分配管理内存 (一)标识符(Identifier) 1. 定义变量时,使用了诸如 a.abc.mn123 这样的名字,它们都是程序员自己起的,一般能够表达出变量的作用, ...

  3. 物流跟踪API-快递单订阅

    上一篇文章我们讲解了轨迹查询的接口,通过快递鸟接口可以实现实时查询物流轨迹,这次给大家推荐订阅服务功能. 为了更好的理解订阅服务,我们来做个对比, 即时查询是主动查询物流轨迹,需要我们主动调用接口才能 ...

  4. High一下!

    代码: <a title="把这个链接拖到你的Chrome收藏夹工具栏中" href='javascript:(function() { function c() { var ...

  5. Codeforces 1188B Count Pairs (同余+分离变量)

    题意: 给一个3e5的数组,求(i,j)对数,使得$(a_i+a_j)(a_i^2+a_j^2)\equiv k\ mod\ p$ 思路: 化简$(a_i^4-a_j^4)\equiv k(a_i-a ...

  6. eclipse里新建work set,将项目分组放在不同文件夹

    想必大家的Eclipse里也会有这么多得工程...... 每次工作使用到的项目肯定不会太多...... 每次从这么大数量的工程当中找到自己要使用的, 必须大规模的滚动滚动条......有点不和谐了. ...

  7. Gdal随笔

    开始研究遥感影像的分割,尝试去通过gdal对影像进行读取并对图像进行分割.过程中遇到了许多问题,现总结如下. 1.error1:range must be finite 报这个错误是因为数组中有Nan ...

  8. SSL公钥证书传递进行隐匿传输数据

    title: 使用X.509公钥证书传递进行隐匿传输数据 date: 2018-02-11 17:47:50 tags: --- 使用X.509公钥证书传递进行隐匿传输数据 看到国外一篇有关于在ssl ...

  9. Andriod you must restart adb and eclipse

    今天看着视频 学习着 andriod ,启动 的时候 竟然报错 我试了N种google来的方法,都失效,现在把我的解决方法告诉大家,希望能帮到大家. 首先,我先罗列下我搜到的方法,大家也可以尝试. 1 ...

  10. ls-remote -h -t git://github.com/adobe-webplatform/eve.git

    npm WARN deprecated bfj-node4@5.3.1: Switch to the `bfj` package for fixes and new features! npm WAR ...