第五天:java面向对象(java三大特性:封装、继承、多态)

第9天 面向对象
今日内容介绍
面向对象概述
面向对象的三大特性之一:封装
第1章面向对象概述
1.1理解什么是面向过程、面向对象
面向过程与面向对象都是我们编程中,编写程序的一种思维方式。
面向过程的程序设计方式,是遇到一件事时,思考“我该怎么做”,然后一步步实现的过程。
例如:公司打扫卫生(擦玻璃、扫地、拖地、倒垃圾等),按照面向过程的程序设计方式会思考“打扫卫生我该怎么做,然后一件件的完成”,最后把公司卫生打扫干净了。
面向对象的程序设计方式,是遇到一件事时,思考“我该让谁来做”,然后那个“谁”就是对象,他要怎么做这件事是他自己的事,反正最后一群对象合力能把事就好就行了。
例如,公司打扫卫生(擦玻璃、扫地、拖地、倒垃圾等),按照面向对象的程序设计方式会思考“我该让谁来做,如小明擦玻璃、让小丽扫地、让小郭拖地、让小强倒垃圾等”,这里的“小明、小丽、小郭、小强”就是对象,他们要打扫卫生,怎么打扫是他们自己的事,反正最后一群对象合力把公司卫生打扫干净了。
1.2面向对象举例
买电脑(组装机)
先使用面向过程说明买电脑这件事:假如我们需要买组装电脑,这时首先会在网上查询具体每一个硬件的参数和报价。然后会去电脑城进行多家询价,接着询价结束后回家根据具体的结果分析出自己比较满意的哪家报价,接着会到这家店里进行组装,组装时还需要进行现场监督,组装完成安装相应的系统,然后电脑抱回家。
分析上述整个过程大体分一下几步:上网查询参数和报价、电脑城询价、现场安装和监督、抱电脑回家。在整个过程中我们参与了每一个细节,并且会感觉相当累。
使用面向对象说明买电脑这件事:假如我们需要买组装机,这时应该找一个懂电脑硬件的人,让他帮我们查看参数和报价,并进行询价和杀价,以及现场组装监督。而我们自己并不需要亲历亲为具体怎么做,只要告诉这个人我们想要的具体需求即可。
分析上述整个过程,发现瞬间变的十分轻松,只要找到懂电脑硬件的这个人,我们的问题都可以解决。并且在这个过程中我们不用那么辛苦。
1.3面向对象思维方式的好处
打扫房间:打扫的步骤,打扫的过程
1.桌子,床整理干净,被子叠整齐,桌子上收拾干净
2.去扫一扫地,去把垃圾桶中垃圾袋倒掉
3.去洗手间找一个拖把,盛满水,把拖把侵湿,等待拖把晾干
4.把屋子整个拖一遍
面向过程需要我们亲历亲为(自己做),我们必须得自己实现每个细节
面向过程对我们来说很"累",面向过程关注每个步骤(例如:上面的步骤都是自己来做)

面向对象:
打扫房间:
1.去网上找保洁服务公司电话
2.打电话,让保洁公司给我派一个保洁阿姨
3.保洁阿姨上门打扫卫生
4.我验收,把钱支付给保洁阿姨
面向对象:
面向对象不需要我们自己亲力亲为,我们只需要指挥被人去干
面向对象我只关注结果(例如:上面例子,只关心打扫结果)

通过生活中的真实场景使用面向对象分析完之后,我们开始分析面向过程和面向对象的差异做出总结:
面向对象思维方式是一种更符合人们思考习惯的思想
面向过程思维方式中更多的体现的是执行者(自己做事情),面向对象中更多的体现是指挥者(指挥对象(别人)做事情)。
面向对象思维方式将复杂的问题简单化,因为我们不再关注细节,只关注结果
第2章类与对象
2.1类与对象在现实生活中的映射
类:对现实生活中具有共同的属性(事物的特征)和行为(事物的活动)的事物的统称,例如人类,对具有共同的姓名,年龄,身高,性别等属性,以及吃饭,睡觉,喝水行为的生物我们叫它人类,植物类,对具有共同的
名称,叶子等属性,以及光合作用的行为的生物我们统称为植物类,类不代表现实生活中任何一个事物,只是一个统称而已

对象:就代表现实生活中的具体的事物,例如张三,草,大众汽车,一个对象代表一个现实生活中一个具体的事物
2.2对象在实际生活中的使用
对面向对象有了了解之后,我们来说说在具体问题中如何使用面向对象去分析问题,和如何使用面向对象。
我们把大象装冰箱为例进行分析。
在针对具体的需求,可以使用名词提炼的办法进行分析,寻找具体的对象。
需求:把大象装冰箱里
对象:大象、冰箱
分三步:
1、打开冰箱门
2、将大象装进去
3、关闭冰箱门
分析发现打开、装、关闭都是冰箱的功能。即冰箱对象具备如下功能:
冰箱打开
冰箱存储
冰箱关闭
用伪代码描述,上述需求中有两个具体的事物 大象 和 冰箱
描述大象:
class 大象
{
}
描述冰箱
class冰箱
{
void 打开(){}
void 存储(大象){}
void 关闭(){}
}
当把具体的事物描述清楚之后,需要使用这些具体的事物,Java使用具体的事物,需要通过new关键字来创建这个事物的具体实例。
使用对象:
1、创建冰箱的对象
冰箱 bx = new 冰箱();
2、调用冰箱的功能
对象.功能();
bx.打开();
bx.存储(new 大象());
bx.关闭();
总结:
1、先按照名词提炼问题领域中的对象
2、对对象进行描述,其实就是在明确对象中应该具备的属性和功能
3、通过new的方式就可以创建该事物的具体对象
4、通过该对象调用它以后的功能。
2.3对象在代码中的体现
在分析现实生活中的事物时发现,这些事物都有其具体的特点和功能,这些特点和功能就组成了这个特殊的事物。
描述小汽车。
分析:
事物的特点(属性):
颜色。
轮胎个数。
事物的(功能):
运行。

发现:事物其实就是由特点(属性)和行为(功能)组成的。
可以简单理解:属性就是数值,其实就是变量;行为就是功能,就是方法。
小汽车 {
颜色;
轮胎个数;
运行() { }
}
通过计算机语言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();
}
}
2.4一个对象的内存图解
经过上面对小汽车的描述,和Java代码测试,我们虽然可以将生活中的事物使用Java代码描述出来,但是这些代码在内存中是如何执行的,接下来我们需要研究下对象在内存的图解。
接下来就是分析对象在内存中的分配情况。这里需要画图一步一步演示,严格按照画图流程讲解内存对象创建过程。

2.5二个对象的内存图解
创建两个车对象代码:
public class Person {
private String name;
private int age;

// 设置年龄方法
public void setAge(int age) {
	                      
   //age = age;//这句话相当于 setAge上的age变量自身给自身赋值
   this.age=age;//this.age访问的就是成员变量                   
}

// 获取年龄
public int getAge() {
	return age;
}

public void eat() {
	 System.out.println(name+"..."+age);
	 
}

}

public class CarDemo02 {
public static void main(String[] args) {
//黑色的四个轮子的车,一个对象对应一辆车
Car c=new Car();
c.color=“黑色”;
c.number=4;
c.run();

	//第二台车三个轮子的白色的车
	Car c2=new Car(); 
	c2.color="军绿色";
	c2.number=3;
    c2.run();
}

}

内存图解:

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

图1-1类与对象
在上图中,可以将玩具模型看作是一个类,将一个个玩具看作对象,从玩具模型和玩具之间的关系便可以看出类与对象之间的关系。类用于描述多个对象的共同特征,它是对象的模板。对象用于描述现实中的个体,它是类的实例。从上图中可以明显看出对象是根据类创建的,并且一个类可以对应多个对象,接下来分别讲解什么是类和对象。
经过前面几个知识点的学习,基本上掌握了类是用于描述事物的,类中可以定义事物的属性和行为。而对象是通过描述的这个类,使用new关键字创建出来,通过对象就可以调用该对象具体的属性和功能了。
第3章对象数组

3.1对象数组定义和使用
概念:用来保存java中对象的数组,即对象数组。
定义语法:
类名[] 数组名=new 类名[对象个数];
使用案例:
//先定义类
public class Student {
//属性–声明对象具有的特征变量
public String name;
public int age;
public char sex;//性别
public String address;

//方法
public void introduce(){
    System.out.println("我叫"+name+",今年"+age+"岁,性别:"+sex+",来自"+address);
}

}
//测试类中使用数组保存4名学生对象
package cn.kgc.oo;

import java.util.Arrays;

/*
测试类面向对象的演示:创建对象
*/
public class Demo1 {
public static void main(String[] args) {
//学生对象:曹文博
Student s1=new Student();
s1.name=“曹文博”;//属性赋值数据类型由类中属性类型确定
s1.age=23;
s1.sex=‘男’;
s1.address=“湖北武汉”;

    //学生对象:刘燚
    Student s2=new Student();
    s2.name="刘燚";
    s2.age=18;
    s2.sex='男';
    s2.address="湖南长沙"; 

    //定义一个数组保存4个学生对象:对象数组==============难点
    //1.定义数组类型:类
    Student[]  students=new Student[4];//students理解教室 数组具有默认值
    System.out.println(students[0]);//引用类型的数组,默认值都是null类似教室每一个位置都是空的
    //2.数组存值
    students[0]=s1;
    students[1]=s2;

    //2-1 创建对象
    Student s3=new Student();
    s3.name="廖颂";
    s3.age=21;
    s3.sex='男';
    s3.address="湖北襄阳";
    //2-2 存放数组中
    students[2]=s3;

    //依次做自我介绍
    for(int i=0;i<students.length;i++){
        Student s=students[i];//获取实际就是一个学生对象
        //因为数组中某个下标如果没有存储过学生对象,则是默认值null,
        //null是不能.任何属性和方法的,故if判断是为了避免出现NullPointerException异常
        if(s==null){
            continue;
        }
        s.introduce();
    }
}

}

需要免费的java基础视频和java企业级开发视频以及项目实战(包含SSM框架详细讲解、activiti流程引擎、springboot、springcloud视频讲解和项目实战课程)可以添加qq:1743337375

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值