黑马程序员_面向对象的思想

9 篇文章 0 订阅
9 篇文章 0 订阅
---------------------- android培训java培训、期待与您交流! ----------------------

2、面向对象的理解:

特点:1、面向对象就是更符合人们思考习惯的一种思想。

          2、从面向过程的执行者,转变成了面向对象的指挥者

3、面向对象将复杂的事情简单化了。

其实面向对象是一种思想,是面向过程而言,将复杂的事情变的更简单了。

通过把大象放到冰箱里这个列子来理解面向对象的概念

面向过程:把冰箱门打开、存储大象、关闭冰箱;强调的过程注重行为;

面向对象:冰箱.打开、冰箱.存储、冰箱.关闭;强调的是冰箱这个对象。

面试题:你怎么理解面向对象?

首先说面向对象的特点:它是一种思想,它让复杂的问题简单化,它把执行者变成了指挥者。

然后举例子来说明,最牛的就是结合实际场景来说:其实面试官你就是在用面向对象的思想在思考问题,为什么这么说?因为公司业务蒸蒸日上,需要招更多的人来完成项目,所以才在这里招聘人员,你需要找一些具备专业编程经验的人,来帮公司完成工作,那么我就是那个对象,因为我具备专业编程能力,你就是那个指挥者,指挥我来做事,至于我怎么去完成编程任务,你是不需要去知道,你只要结果了就可以了,这其实就是把你之前的工作简化了,你不必再事必躬亲了。这就是面向对象思想的体现。

同时可以结合去饭店吃饭,在家做事等等列子来说明面向对象的思想。

扩展:OOP:面向对象编程。

          OOA面向对象分析。

          OOD:面向设计。还有面向接口、面向框架、面向对象的语言:C++JAVAC#
4、在实现功能,先找java当中是不是提供好了相关的对象,没有对象自己造一个对象。

比如说公司招聘人员找不到人的时,这时公司就需要自己在公司内部培养人,也就是自己造对象。

5、类和对象关系:

a) 类到底是什么?
类就是对现实生活中事物的描述,描述中包含了该类事物的共性内容。

Class Car()

{

Int num;

String color;

Void run(){}

}

在类中定义的变量和函数都称为类中的成员。

成员:

成员变量---属性

成员函数---行为

b) 什么是对象?

对象就是该类事物实实在在存在的个体。

Eg:现实生活中的对象:张三、李四

想要描述:提取对象中的共性内容,对具体的抽象。

描述时:这些对象的共性有姓名年龄性别学习java的功能。

对象也可以理解为其实就是个容器,用来存储更多的数据,存储的都是每一个对象特有的数据,而类就是这些数据所属的属性。

java语言来描述一个小汽车

描述事物:无非就是描述事物的属性和行为

属性:轮胎数、颜色

行为:运行

Eg:

Class Car

{

String color="red";

Int num=4;

Run()

{

System.out.println(color+""+num);

}

}

Class CarDemo

{

Public static void main(String[] args)

{

Car c=new Car();

C.color="bule";

C.num=5;

C.run();m

Car c1=new Car();

C1.num=8;

C1.color="green";

C1.run();

}

}

重点:分析上述代码在内存中的分布:

复习的时候写内存分析:

6、成员变量和局部变量的区别:

1、源代码中定义位置不同:

成员变量:定义在类中,在整个类中有效。

局部变量:定义在函数中,在局部范围内有效。

简单一句话:作用范围不一样,成员变量作用于整个类中,局部变量作用于函数中,或者语句中。

2、在内存中的位置和事件不同:

生命周期不同:

成员变量:随着对象的创建的而出现在堆内存中,随着对象被回收而消失。

局部变量:随着变量所属局部区域的运行,而出现在栈内存中,随着所属区域运行结束而释放。

3、变量使用的初始化:

成员变量:因为堆内存中都有默认初始化值,对于引用型变量默认值就是null;

局部变量:因为在栈内存中都没有默认初始化值,必须手动初始化后才可以参与运算。

7、匿名对象:

即没有名字的对象,简化书写用的。

基本使用:

1、当对对象的方法只调用一次时,可以用匿名对象来完成

这样写比较简化,如果对一个对象进行这个成员的调用,必须给这个对象起个名字

2、可以将匿名对象作为实际参数进行传递。一旦对对对进行多个成员操作时。必须要对对象起个名字。

Eg:

Main()

{

Show(new  Car())

}

Public  static void show (Car c)

{

C.num=3

C.color="back";

C.run();

}

8、面向对象三个特征:

封装:

是指隐藏对象的属性和实现细节,仅对外提供公共访问方式,凡是面向对象必须有封装性。

特点:

将变化隔离

便于使用

提高复用性

提高安全性

原则:1、将不需要对外提供的内容都隐藏起来。

  2、把属性都隐藏,提供公共方法对其访问。

在代码中的体现:

1、将成员变量都私有化,并通过共有的方法对其进行访问,这两个方法是:setXxx\getXxx

2、只要不准备对外提供的全部都封装起来,

3、私有仅仅是封装的一种表现形式,函数是最小的封装体。

方法需要私有吗?

Public static void selectSort()

{

Swap();

}

Private void swap()//此处私有是因为位置置换不用提供给用户。

{

}

代码实现:

Class Person

{

Private int age;//为了不让其他程序直接访问age属性,避免错误的数据,可以使用一个关键字来完成private私有,它是一个权限修饰符。

Public void setAge()//对外提供函数是可以控制你输入的参数。

//一个成员变量通常对应的两个方法、

{

If(a>130||a<0)

{

Age=a;

Speak();

}

Else

System.out.println();

}

Public void getAge()

{

Return age;

}

Void speak()

{

Sop();

}

}

Class PersonDemo

{

Public static void main(String[] args)

{

Person p=new  Person();

P.age=-20;//错误数据是因为对象直接访问age属性造成的。

P.speak();

}

}

总结:之所以对外提供访问方式,就是因为可以在访问方式中加入逻辑判断等语句

对访问的数据进行操作,提高代码的健壮性。凡是set开头的返回值类型是voidget开头的跟它的返回值类型一致。

 

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

详细请查看:http://edu.csdn.net/heima

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
完整版:https://download.csdn.net/download/qq_27595745/89522468 【课程大纲】 1-1 什么是java 1-2 认识java语言 1-3 java平台的体系结构 1-4 java SE环境安装和配置 2-1 java程序简介 2-2 计算机中的程序 2-3 java程序 2-4 java类库组织结构和文档 2-5 java虚拟机简介 2-6 java的垃圾回收器 2-7 java上机练习 3-1 java语言基础入门 3-2 数据的分类 3-3 标识符、关键字和常量 3-4 运算符 3-5 表达式 3-6 顺序结构和选择结构 3-7 循环语句 3-8 跳转语句 3-9 MyEclipse工具介绍 3-10 java基础知识章节练习 4-1 一维数组 4-2 数组应用 4-3 多维数组 4-4 排序算法 4-5 增强for循环 4-6 数组和排序算法章节练习 5-0 抽象和封装 5-1 面向过程的设计思想 5-2 面向对象的设计思想 5-3 抽象 5-4 封装 5-5 属性 5-6 方法的定义 5-7 this关键字 5-8 javaBean 5-9 包 package 5-10 抽象和封装章节练习 6-0 继承和多态 6-1 继承 6-2 object类 6-3 多态 6-4 访问修饰符 6-5 static修饰符 6-6 final修饰符 6-7 abstract修饰符 6-8 接口 6-9 继承和多态 章节练习 7-1 面向对象的分析与设计简介 7-2 对象模型建立 7-3 类之间的关系 7-4 软件的可维护与复用设计原则 7-5 面向对象的设计与分析 章节练习 8-1 内部类与包装器 8-2 对象包装器 8-3 装箱和拆箱 8-4 练习 9-1 常用类介绍 9-2 StringBuffer和String Builder类 9-3 Rintime类的使用 9-4 日期类简介 9-5 java程序国际化的实现 9-6 Random类和Math类 9-7 枚举 9-8 练习 10-1 java异常处理 10-2 认识异常 10-3 使用try和catch捕获异常 10-4 使用throw和throws引发异常 10-5 finally关键字 10-6 getMessage和printStackTrace方法 10-7 异常分类 10-8 自定义异常类 10-9 练习 11-1 Java集合框架和泛型机制 11-2 Collection接口 11-3 Set接口实现类 11-4 List接口实现类 11-5 Map接口 11-6 Collections类 11-7 泛型概述 11-8 练习 12-1 多线程 12-2 线程的生命周期 12-3 线程的调度和优先级 12-4 线程的同步 12-5 集合类的同步问 12-6 用Timer类调度任务 12-7 练习 13-1 Java IO 13-2 Java IO原理 13-3 流类的结构 13-4 文件流 13-5 缓冲流 13-6 转换流 13-7 数据流 13-8 打印流 13-9 对象流 13-10 随机存取文件流 13-11 zip文件流 13-12 练习 14-1 图形用户界面设计 14-2 事件处理机制 14-3 AWT常用组件 14-4 swing简介 14-5 可视化开发swing组件 14-6 声音的播放和处理 14-7 2D图形的绘制 14-8 练习 15-1 反射 15-2 使用Java反射机制 15-3 反射与动态代理 15-4 练习 16-1 Java标注 16-2 JDK内置的基本标注类型 16-3 自定义标注类型 16-4 对标注进行标注 16-5 利用反射获取标注信息 16-6 练习 17-1 顶目实战1-单机版五子棋游戏 17-2 总体设计 17-3 代码实现 17-4 程序的运行与发布 17-5 手动生成可执行JAR文件 17-6 练习 18-1 Java数据库编程 18-2 JDBC类和接口 18-3 JDBC操作SQL 18-4 JDBC基本示例 18-5 JDBC应用示例 18-6 练习 19-1 。。。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值