Java基础篇--面向对象(Object Oriented)
Java基础篇--面向对象(Object Oriented)
- 1. 面向对象概念
- 1.1 什么事面向对象
- 1.2 理解面向对象
- 1.3 面向对象的特点
- 1.4 面向对象开发设计特征
- 2. 类与对象
- 2.1 什么是类
- 2.2 类与对象的关系
- 3. 类的定义
- 4. 成员变量与局部变量的区别
- 4.1 成员变量
- 4.2 局部变量
- 4.3 成员变量初始化
- 5. 创建对象,使用对象
- 6. 对象内存结构
- 6.1 对象的产生
- 6.2 对象的生命周期
- 7. 匿名对象
1. 面向对象概念
1.1 什么事面向对象
面向对象(
Object Oriented
)是一种思想,90年代以后软件开发的主流思想。由于现实社会是由各种各样的事物所组成的,而我们编程又是在模拟现实社会,那么在程序中也要用一些东西来表示现实社会中的事物,这些东西就是程序中的对象。我们在程序中使用这些对象,对其特征和行为进行操作进行编程,这就是面向对象编程。在使用面向对象编程思想之前,我们通常用面向过程的思想编程,先分析出解决问题的步骤,然后按照步骤一步一步实现。
1.2 理解面向对象
- 面向对象是相对面向过程而言
- 面向过程
- 强调的是功能行为
- 面向对象
- 将功能封装进对象,强调具备了功能的对象。
1.3 面向对象的特点
- 是一种符合人们思考习惯的思想
- 可以将复杂的事情简单化
- 将程序员从执行者转换成了指挥者
- 完成需求时:
- 先要去找具有所需的功能的对象来用。
- 如果该对象不存在,那么创建一个具有所需功能的对象。
- 这样简化开发并提高复用。
1.4 面向对象开发设计特征
- 开发的过程:其实就是不断的创建对象,使用对象, 指挥对象做事情。
- 设计的过程:其实就是在管理和维护对象之间的关系。
- 面向对象的特征:
- 封装(encapsulation)
- 继承(inheritance)
- 多态(polymorphism)
- 面向对象编程的优点
- 提高代码复用性。
- 使用者无需关心具体细节。
- 转变程序员角色,更加符合人的思维习惯。
2. 类与对象
2.1 什么是类
类是用来描述对象的。由于对象是虚拟出来的东西,是看不见摸不着的,我们需要在程序中使用对象,就需要用一种方式来描述对象,然后根据这个描述来创建对象。使用计算机语言就是不断的在描述现实生活中的事物。java中描述事物通过类的形式体现,类是具体事物的抽象,概念上的定义。对象即是该类事物实实在在存在的个体。
2.2 类与对象的关系
对象是类的实例,类是对象的抽象。
可以理解为:
- 类就是图纸
- 汽车就是堆内存中的对象
3. 类的定义
- 生活中描述事物无非就是描述事物的属性和行为。
- 如:人有身高,体重等属性,有说话,打球等行为。
- Java中用类class来描述事物
- 属性: 对应类中的成员变量。
- 行为: 对应类中的成员函数。
- 定义类其实在定义类中的成员(成员变量和成员函数)。
class Person {String name;int age;void speak(){System.out.println("My name is " + name);System.out.println("I am " + age + " years of age");}
}
4. 成员变量与局部变量的区别
4.1 成员变量
- 成员变量定义在类中,在整个类中都可以被访问。
- 成员变量随着对象的建立而建立,存在于对象所在的堆内存中。
- 成员变量有默认初始化值。
4.2 局部变量
- 局部变量只定义在局部范围内,如:函数内,语句内等。
- 局部变量存在于栈内存中。
- 作用的范围结束,变量空间会自动释放。
- 局部变量没有默认初始化值。
4.3 成员变量初始化
当一个对象被创建时,会对其中各种类型的成员变量自动进行初始化赋值。基本数据类型初始化值为0,引用数据类型初始化值为null。
5. 创建对象,使用对象
class Car// 对这类事物进行描述Car
{String color = "red";int num = 4;void show() {System.out.println("color="+color+"..num="+num); }
}class CarDemo
{ public static void main(String[] args) { Car c = new Car();//建立对象 c.color = "black";//对对象的属性进行修改 c.show();// 使用对象的功能。 }}
6. 对象内存结构
6.1 对象的产生
Person p = new Person();
这句话先在堆内存中创建了一个对象,然后栈内存中创建一个变量引用了对象的地址。
Car c1 = new Car();
c1.color = "blue";
6.2 对象的生命周期
对象的生命周期从new关键字创建时开始,到没有任何引用到达对象时结束(成为垃圾)。
7. 匿名对象
- 我们可以不定义变量引用对象,使用new关键字创建对象后直接使用,这样的对象没有名字,所以叫匿名对象。
- 匿名对象因为没有任何引用到达,在使用一次之后即成为垃圾。
- 匿名对象是对象的简化形式
- 匿名对象两种使用情况
- 当对对象方法仅进行一次调用的时
- 匿名对象可以作为实际参数进行传递
Java基础篇--面向对象(Object Oriented)相关推荐
- 第十二课 Java基础篇——面向对象进阶(一)
一.Static static表示静态,是Java中的一个修饰符,可以修饰成员方法,成员变量 静态变量是随着类的加载而加载的,优先于对象出现的 练习1.定义数组工具类 需求:在实际开发中,经常会遇到一 ...
- Java基础篇——面向对象编程
活动地址:CSDN21天学习挑战赛 学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩:迟一天就多一天平庸的困扰.各位小伙伴,如果您: 想系统/深入学习某技术知识点- 一个人摸索学习很难坚持 ...
- 第九课 Java基础篇——面向对象(综合案例)
1.文字版格斗游戏 格斗游戏,每个游戏角色的姓名,血量,都不相同,在选定人物的时候(〈new对象的时候),这些信息就应该被确定下来. Role.Java package cn.nwafu;import ...
- 100天精通Java (基础篇) —面向对象编程1.0【Java分水岭】
目录 一.类与对象 1.养猫问题 2.使用之前学的技术解决 3.之前技术解决的缺点分析 4.代码 5.对象[属性,行为] 6.类与对象的关系示意图 7.类与对象的区别和联系 8.对象在内存中存在形式( ...
- 《Java 后端面试经》Java 基础篇
<Java 后端面试经>专栏文章索引: <Java 后端面试经>Java 基础篇 <Java 后端面试经>Java EE 篇 <Java 后端面试经>数 ...
- Java三十天速成(java基础篇)
Day01~04 ## 一. 数据类型和变量 package test;public class hello {public static void main(String[] args) {Syst ...
- Java基础篇——类与子类
1. 什么是类,什么是子类? 类:类是Java程序的基本要素,一个Java应用程序就是由若干个类所构成的.类是Java语言中最重要的"数据类型". 子类:由继承得到的类叫子类. 引 ...
- 菜鸟学习笔记:Java基础篇4(面向对象三大特征)
菜鸟学习笔记:Java面向对象篇中 继承 概念 方法重写(override) Object类 Super关键字 组合 final关键字补充 封装 访问控制符 多态 继承 概念 继续上一篇的例子: #m ...
- 菜鸟学习笔记:Java基础篇3(面向对象思想、程序执行过程内存分析、面向对象重要概念)
菜鸟学习笔记:Java面向对象篇上 Java面向对象的思想 Java程序执行过程内存分析 Java垃圾回收机制 构造方法 方法重载(overload) static关键字 this关键字 Java面向 ...
最新文章
- 了解这些电源知识能提高机房供电可靠性
- Java接口回调机制
- OpenCV基本mat重建的实例(附完整代码)
- [原创] 指针操作程序答案 — 谭浩强C语言习题答案
- C# 使用 CancellationTokenSource 终止线程
- linux中常用安装程序的方法,Linux下常见的软件安装方式
- Link方式安装eclipse插件
- mysql乘法函数_数据库入门(MySQL):mySQL运算符与mySQL常用函数
- linux中telnet工具,linux中telnet工具的介绍和使用
- FusionChartsFree的用法
- lisp横断面数据文件_【干货】横断面测量数据批量转换成断面图,CASS应该如何做?...
- 关于ResourceBundle国际化的一些思考
- CentOS6.5 开启防火墙iptables端口,如3306,8080
- cute-cnblogs 自定义博客园样式美化二期来啦~
- linux内核抢占加锁,linux内核的preempt抢占调度,preempt_count抢占保护“锁”
- BZOJ 1189 [HNOI2007]紧急疏散evacuate 二分+最大流
- 自动控制原理(5)——结构图的绘制
- 零基础云开发一个投票小程序 | 我的投票列表页
- 如何修改excel的修改日期?
- 基于v$lock.block及request及dba_waiters或dba_blockers学习lock锁系列七