黑马程序员技术交流社区
标题:
day06JAVA笔记
[打印本页]
作者:
仙兒哥
时间:
2013-4-10 02:21
标题:
day06JAVA笔记
面试1
怎么理解面向对象,符合人们现实中的思想 和面试现场的对象
面试就是面试官面向应聘者 企业一个项目面试官可以做但是费时
所以招一个具有专业素质的人这就是对象 面试官只要面对我 我返回结果就行了
不能光说万物皆对象要活用 结合场景
面试问道面向对象 一定会问面向对象的特征1封装2多态3继承
面试2
//基本数据类型参数传递
//引用数据类型参数传递
结果并画图
作业:举例体现封装的思想119
private 自己看得见自己
protected 和儿子一起洗澡
public 暴露狂
>什么是封装?
就是穿上衣服。
>为什么要封装?
有不想让人看到的地方。
>封装会带来哪些好处?
大家只会注意我长得怎么样,而不会在意我动过手术的刀疤。
>封装的作用是什么?
让大家只注意看应该看的。
>如何实现封装?
穿衣服
一 面向对象
1.1 面向对象和面向过程
1.1.1 面向过程
对问题进行步骤的分析1,2,3,并通过具体的功能(函数进行分析),然后就按照步骤进行执行即可
举例
将大象装进冰箱里,面向过程思考方法:
第一步,打开冰箱 void open()[]
第二步,装入大象 void store()[]
第三步,关闭冰箱 void close()[]
面向过程语言
basic:语言,VB:basic的可视化工具,C:
1.1.2 面向对象
面向对象的思维方式将复杂事情简单化。将我们程序由原来的执行者变成了控制者
面向对象语言
c++:语言(不完全面向对象)
vc++:可视化的c++工具
c#:(完全面向对象 几乎跟JAVA差不多)
1.2.3 面向过程和面向对象的区别
面向过程和面向对象都是一种解决问题的一种方式
面向过程注重的是动作的执行,而面向对象的思维方式它注重的是实体
只要找到实体并赋予动作,想要操作时,只要找到实体就可以
面向对象的思维方式将复杂事情简单化。
将我们程序由原来的执行者变成了控制者。
1.2 面向对象
1.2.1 面向对象概念
强调的问题领域中涉及的事物(实体),并分析事物中具备的属性和行为,将属性和行为都封装到一个具体的事物中
而这个事物我们称其为对象,哪个实体对功能更熟悉更擅长,这动作就赋予给谁,没有实体可以创建
1.2.2 面向对象思考过程
将大象装进冰箱里
操作的是谁? 是冰箱
打开功能,或者存数以及关闭功能,是不是冰箱的功能? 是的
那么就将这些功能都定义到冰箱这个事物当中
需要完成这个需求,只要使用冰箱中的功能即可
注意
1.面向过程和面向对象只是为了提高代码复用性
2.以前是面向整个过程,现在是面向具体的对象
3.将过程都封装到得对象中,只要找到对象,就可以使用对象中这些具体内容
1.3.3 面向对象名词分析法
分析事物时找到名词,名词一般都会将其抽象成实体,动词一般都是动作
例:人开门
实体:人,门
动作:开//当前动作赋予给谁取决于这个动作那个实体完成会更容易或更方便
人扇扇子
实体:人,扇子
动作:扇//扇的动作时扇子,给人的话就是扇子不动人动,就凹凸曼了
人修车
实体:人,车
动作:修//车的参数,零件自己最熟悉,非要把修的方法放入人中也可以但是麻烦,所以修的动作给车
3.人使用ATM存取款与查看帐户。
实体: 人 ATM
动作: 存 取 查 (这些行为都是ATM)
开发的过程
其实就是不断的创建对象,使用对象,指挥对象做事情
设计的过程
其实就是在管理和维护对象之间的关系
1.3.4 面向对象语言三个基本特征
封装 继承 多态
作者:
仙兒哥
时间:
2013-4-10 02:21
1.3.5 面向对象特点
面向对象特点
1.面向对象是一种符合人们思考习惯的思想
2.面向对象可以将复杂的问题简单化
3.面向对象将执行着变成了指挥者
一句话总结
有形和无形 万物介对象
1.3.6 面向对象好处
将复杂问题简单化,但是处理简单问题不要把简单问题复杂化,面向过程处理复杂问题比较难
举例
水果摊一开始要自己上货,卖水果,之后当老板了可以雇上货人,卖货人调用他们即可
二 类与对象
2.1 类的思考方式
在分析事物的时候,问题领域(需求),其实就是找出问题领域中涉及的对象
归纳一类事物,分析事物的方法
1.长什么样,通过外部特征 //但是,不能区分,比如人跟猴子长差不多
2.他所特有的功能,动作,行为 //这样就能具体区分人跟猴子了
2.1 类与对象
类(抽取)
类就是将多个对象具备的共性进行抽取而来的,一个描述事物的方式
对事物进行总结得到一个抽象的概念,那么这个概念我们就叫它类
类是对象的蓝图
对象(类的实例化)
对象就是当前这个概念中的一个具体实体,是java对具体生活中事物的描述
该事物实实在在存在个体,在计算机中该个体是通过new关键字建立的
举例
//汽车与图纸的例子???(视频5类与对象)
描述事物无非就是描述事物的属性和行为
class car
calss cardemo
//创建Car类的对象.创建对象必须用new关键字完成
//字符串功能在堆内存中 初始化值=null
//指数对象做事情格式: 对象.对象成员c.run()
//定义类就是在定义类中的成员
实际开发中,大部分情况下都是先有类再根据类,实例化出对象
该事物实实在在存在个体,在计算机中该个体是通过new关键字建立的
2.3 定义类
class 类名{
成员属性
成员方法
}
2.4 定义对象
格式
类名 对象名(引用名) = new 类名() ;
创建内存图必会
举例
class Person //创建一个类,相当于创建了一种数据类型
{
String name;
int age;
void 吃()
{
}
public static void main(String[] args)
{
Person GB =new Person();//Person某某创建Person数据类型,右边可以看成赋值具体值
Person HXY =new Person();//当我们创建这个类的对象时,就相当于创建了这个类型的一个数据
System.out.println("Hello World!");
}
} //内存图中 堆内存中的叫对象,GB,HXY,P1是引用
2.5 怎样使用对象调用属性
引用名(对象).属性 //GB.name
引用名(对象).方法() //GB.eat() 现在调用方法必须都用这种格式
同一个类的对象,它们具有相同的成员属性,但是成员属性的值可能不同。
调用的是哪个对象的成员属性就得到这个对象的成员属性。
//当创建一个类时,相当于创建了一种数据类型,一般叫类 类型(引用类型,除了4类8种都是引用类型)
//当创建这个类的对象时,就相当于创建了这个类型的一个数据
//实际开发中很多类型java是没有定义了,所以我们自己定义一个类具有属性,行为,我们在调用
//我们真实使用的是对象(类是蓝图有了即可,我们用的还是具体的对象)
姓名 String
年龄 int
吃 void ()//修饰符 返回值类型 方法名 (参数列表)
class Person
{
public static void main(String[] args)
{
String name; //成员变量,成员属性
int age; //成员方法
void eat()
Person p1=new Pereon() //真正的对象在堆内存中是 new Person,P1只是对象的引用(装的是对象的内存地址)
//对象创建时,它有默认值,当我们通过.操作符进行操作,就是为其属性重新赋值
p1.age=20;//
System.out.println(p1.name)//
}
}
2.6 类中成员变量,局部变量概念
成员变量(成员属性)
对应事物属性,定义在类中的变量
局部变量(成员函数)
对应事物行为
2.7 类中成员变量,局部变量区别
1.在代码中的定义位置
成员变量:定义在类中
局部变量:定义在函数中或者语句中
2.在内存中的位置
成员变量:是创建对象时,才存在于对象中,而且在对内存中
成员变量随着对象的加载而存在 随着对象的变垃圾而消失
当该变量所属的作用于结束,该变量就是放了
3.初始化值的区别:
成员变量:因为在对内存中,所以都有默认初始化值
局部变量:在定义是,如果要被使用,必须明确初始化值
成员变量和局部变量的区别
1作用范围,成员变量在整个类内有效,而局部变量只在其方法内或流程语句中有效
2初始值,成员变量如果没有对其进行初始化,会对其进行默认初始化,局部变量必须初始化才能使用
3生命周期:成员变量的生命周期是与对象的生命周期一致,拒不变量使用完成后就消失
4创建的位置:成员变量在堆内存中,局部变量在栈内存中
2.8 类与类之间的关系
依赖
A类成员变成B类对象
聚集
A方法使用了B类的对象
继承
后面讲
People
"成员属性是可以在下面方法用的"
2.9 匿名对象
Car c=new car();//匿名对象
匿名对象其实就是一种简化形式
当对对象的方法只调用一次时,可以使用匿名对象完成
匿名对象一般只调用方法 不调用属性
匿名对象可以作为实际参数进行传递
三 封装
3.1 封装概念
是指隐藏对象的属性和细节,仅对外提供公共访问方式
private
私有的,它是一个修饰符,可以修饰成员属性与成员方法法
private举例
老师有钱,学生不能直接拿钱那就是抢钱啦
如果老师提供一个借钱的行为,学生调用即可
作者:
仙兒哥
时间:
2013-4-10 02:21
private好处
将变化隔离
便于使用
提高重用性
提高安全性
3.2 封装原则
将不需要对外提供的内容都隐藏起来,隐藏对象的属性和实现细节,仅对外提供公共访问方式
凡是隐藏细节并提供访问方式的都是封装体(函数和类都是封装体)
一般是将成员属性private,对外提供getXxx() setXxx()方法
set方法是应该有参数的,它是用来接收信息进行复制
get方法是有返回值的,他的作用是让外部可以访问我们的成员属性
私有仅仅是封装的一种体现形式而已
命名规则
1.类名 首字母大小写,多个单词组成后面的单词首字母也大小写
2.变量名 "补充"
3.方法名 "补充:
封装好处
将变化隔离,便于使用,提高重用性,提高安全性)
四 构造函数
4.1 构造方法(构造函数)
构造方法的作用
初始化对象
类名 引用明=new 构造方法()
构造方法的格式
1.构造方法的名字必须与类名相同
2.构造方法不能有修饰符(static 权限修饰符除外 public private)
3.构造方法没有返回值类型void也没有
构造方法的注意事项
如果一个类没有构造方法,那么当它加载时,JVM会为其分配一个默认空间的无参构造方法
但是如果我们手动去创建了一个构造方法,那么默认的就不会再创建
多个构造函数是以重载的形式存在的
//不带()是属性,带()是方法
//以后再开发中使用别人写的类时,需要查看其提供什么样的构造方法,才能通过构造=方法去市化对象
构造方法特点
1.函数名与类名相同
2.不用定义返回值类型
3.没有具体的返回值。
注意
1,运行
构造函数是在对象创建时,就自动被调用了
一般函数是对象创建后,才调用
2,次数
构造函数值在对象创建时调用一次,因为初始化动作只执行一次
一般函数是对象创建后调用而且可以被一个对象调用多次
如果对象以产生就需要完成一些属性值的定义,或者行为的运行,
这些内容都定义在构造函数中
如果属性值不确定,可以再构造函数的参数列表上体现
在创建对象时 将具体的值传入
4.2 局部代码块,构造代码块
局部代码块
限定变量的生命周期
构造代码块
"笔试题 需要知道执行流程" (写在类体中)
它是只要构造方法执行,它就执行,并且优先于构造方法执行
作者:
穆爱明
时间:
2013-7-9 09:08
学习一下,感谢分享!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2