------- 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)