黑马程序员04面向对象概述

------- android培训java培训、期待与您交流! ----------

一、面向对象思想的简单概述

面向对象是Java基础学习过程中重点的的一部分。从大体上来说,面向对象思想就是基于面向过程的思想,是软件开发过程中使用的一种思维方式。举两个有趣的小实例来简单解释说明一下。

举例:

A:比如洗袜子过程,如果要完成这一整件事情,那么我们的过程是:

 

面向过程:脱了-->泡一泡-->扭一扭-->搓一搓-->漂洗-->晾干

 

我们如果要偷懒,想简化过程,此时我们可以---------------

找女朋友洗袜子:

面向对象:说两句好话

 

 

B:比如想吃煎饼果子,如果要完成这一整件事情,那么我们的过程是:

 

面向过程:上网搜一下,哪家强?-->买家伙什儿-->买材料-->摊煎饼-->找个人 试吃-->你就可以吃了

 

而现实生活中,我们实际上的做法是---------------

找摊煎饼大妈:

面向对象:-->掏钱-->吃。。。。。

 

 

面向过程:强调功能行为,关注完成的过程

 

面向对象:将功能封装进对象,强调具备了功能的对象,不关注过程

 

 

总结一下面向对象思想的特点:

 

1,是一种更符合我们思想习惯的思想--懒人的思想

 

2,可以将复杂的事情简单化

3,角色发生了转换,执行者-->指挥者 

 

 

面向对象完成需求:

a ,明确开发功能需求。

b ,查找具有该功能的类。

   c ,如果不存在满足功能的类,则定义这样的类。

   d ,创建该类对象,使用对象完成功能。

 

 

二、类与对象

我们学习编程语言,就是为了模拟现实世界的事物,实现信息化,实际生活中,我们是如何描述现实世界事物的呢?

比如描述一美女:

属性脸 ,眼镜 ,腿 ,腰  -->天生的  

功能爱旅游,爱音乐琴棋书画 -->后天的 

再比如描述一手机:

手机:

属性:像素,大小,价格,形状,内存,品牌,型号   iPhone6s

功能:玩游戏,拍照,打电话,发信息,看电影,上网,

 

Java中最基本描述事物的单位是类分类  ),Java中用class描述事物也是如此:

class 分类,分门别类物以类聚 

定义类就是描述一类事物

成员变量 就是事物的属性

成员方法 就是事物的行为

定义类其实就是定义类的成员(成员变量和成员方法)

 

 

如何java定义一个学生类呢?

package cn.itcast;
 
/*
 定义学生类 
 分析:
 学生 :
 属性: 姓名,年龄,性别,学号 (名词)
 功能: 学习,吃饭,睡觉,做作业(动词)
实现:
 */
class Student {
// 成员变量
// 姓名
String name;
// 年龄
int age;
// 性别
String sex;
// 学号
String studyNum;
// 成员方法 注意:别加 static
// 学习
public void study() {
System.out.println("学习");
}
// 吃饭
public void eat() {
System.out.println("吃饭");
}
// 睡觉
public void sleep() {
System.out.println("睡觉");
}
// 做作业
public void doHomework() {
System.out.println("做作业");
}
 
}
/*
 * 一个文件里面写两个类,文件名字必须和测试类名字一致 使用成员 :
 * 
 * 成员变量: 对象名.成员变量名
 * 
 * 成员方法: 对象名.成员方法名(方法的调用)
 */

 

 

类和对象的关系:

1,类是抽象概念,对象是类的具体实例。

2,一个类可以有多个对象。一个对象只属于一个类

 

对象创建格式:

数据类型 变量名(对象名) = new 数据类型(参数);

 

对象的使用:

1,成员变量的访问:对象名.属性名

2,成员函数的调用:对象名.函数名(参数)

 

我们做一个手机类,和一个内存图来帮助理解

class PhoneTest {
 
public static void main(String[] args) {
// 创建对象
Phone p = new Phone();
// 使用成员
p.brand = "苹果";
// 型号
p.type = "5s";
// 价格
p.price = 2999;
// 颜色
p.color = "土豪金";
System.out.println("---------------------");
// 方法
p.call();
p.sendMsg("妈妈喊你回家吃饭,妈妈喊你回家吃饭,妈妈喊你回家吃饭");
p.playApp();
 
}
}
 
// 定义手机类 --描述手机
class Phone {
 
// 成员变量
// 牌子
String brand;
// 型号
String type;
// 价格
int price;
// 颜色
String color;
// num
int num = 20; // 成员变量
 
// 成员方法
 
// 打电话
public void call() {
int num = 10; // 局部变量
System.out.println("打电话" + num);
}
 
// 发信息
public void sendMsg(String text) {
 
System.out.println("发信息:" + text);
}
 
// 玩app
public void playApp() {
System.out.println("玩微信,玩陌陌,玩比邻");
}
}

 

一个对象内存图:


两个对象内存图:



三个对象内存图:


内存位置:

对象由new关键字创建,实体存在于堆栈内存中

任何数据均可以定义成类,创建对象,属于引用类型。

 

 

 

三、成员变量和局部变量的区别

1,在类中的位置不同

成员变量 类中方法外

局部变量 方法内或者方法声明上

2,在内存中的位置不同

成员变量 堆内存

局部变量 栈内存

3,生命周期不同

成员变量 随着对象的存在而存在,随着对象的消失而消失

局部变量 随着方法的调用而存在,随着方法的调用完毕而消失

4,初始化值不同

成员变量 有默认的初始化值

局部变量 没有默认的初始化值,必须先定义,赋值,才能使用。

 

 

四、匿名对象

定义:匿名对象是对象的简化形式,即没有名字直接创建的对象。

 

匿名对象的使用:

对象方法只调用一次时。

作为实际参数传递时。

作为返回值返回时。

 

 

五、面向对象特征

封装(encapsulation)

继承(inheritance)

多态(polymorphism)

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值