本帖最后由 张俊生 于 2013-9-1 12:14 编辑
面向对象
1. 什么是面向对象
|-- 人们解决现实中问题的一种思维模式,思想
|-- 万物皆对象
|-- 日后开发:当你想完成一个功能的时候,找有没有可以完成这个功能的对象
如果有,建立这个对象,指挥这个对象做事情
如果没有,自己创建对象,指挥这个对象做事情
2. 什么是对象
|-- 对象就是现实生活中,确实存在的那个个体
|-- 对象是可以相互转换的:
|-- 做家务的,找了具备做家务功能的对象(媳妇)
|-- 将我培养成了具备做家务功能的对象
|-- 光波炉,具备烧烤,加热..... ,找到这个光波炉这个对象,指挥你做事情
光波炉对象.烧烤(){..........}
3. 什么是类
|-- 是描述现实中对象的抽象,类就是描述对象的
class Person{
String name;
int age;
public void eat(){}
}
Person p = new Person();建立对象,相当于产生了一个现实生活中的人
p.name = lisa;
p.age = 20;
Person p1 = new Person();
p1.name = gaga;
p1.age 23;
4. 成员变量的存储情况
|-- 跟随对象,在堆内存中存储
|-- 堆中的成员变量,都有默认值
|-- 跟随对象的消失而消失
5. 封装
|-- 隔离变化
|-- 提高安全性,
|-- 提高维护性
|-- 面向对象的三大特征之一
|-- private修饰符,最低权限,封装的一种形式,凡是被private修饰的成员,外面的类,访问不到的
|-- 将类中的成员变量私有化,并对外提供公共的访问形式
赋值set 取值get
6. 构造方法 *****
|-- 必须和类名一模一样
|-- 没有返回值,不需要写void
|-- 构造方法,在建立对象的时候,运行一次,仅仅运行一次
|-- 作用是,给对象中的成员变量进行初始化赋值
|-- 构造方法,是可以进行重载的
|-- 构造方法,是可以用权限修饰的
|-- 每一个类,都有一个空参数的默认构造方法
7. this关键字
|-- 表示本类对象的引用,换句话说,哪个对象调用的,this就表示哪个对象
|-- 区分类中的成员变量和方法内部的局部变量重名的情况
|-- this()语句,可以在构造方法之间进行调用
8. 成员变量和局部变量的区别 *****
|-- 成员变量跟随对象,在堆内存中存储
|-- 局部变量,跟随方法,在栈内存存储
|-- 成员变量都有默认值
|-- 局部变量,必须手动赋值
|-- 成员变量跟随对象的消失而消失,生命相对较长
|-- 局部变量,跟随方法的弹栈消失而消失,生命相对较短
|-- 成员变量作用于整个类中
|-- 局部变量作用于定义的大括号中
9. 静态static
|-- 成员变量,被static修饰,变成所有对象的共享数据了
如果我们的程序中,假定有一个数据,是所有人共享的
|-- 静态修饰的成员变量,可以直接类名调用
|-- 被静态修饰的成员变量和成员方法,随着类加载而加载,方法区
|-- 静态不能直接访问非静态,原因是静态的成员先于对象存在于内存中
10. 什么时候使用静态修饰呢?
|-- 当对象中出现了共享数据的时候,就将这个成员变量使用static修饰
|-- 什么时候将方法定义成静态的呢,当这个方法没有访问过对象的特有数据(非静态的),这个方法定义成静态
11. 静态使用注意事项
|-- 静态不能直接访问非静态
|-- 静态方法中不能写this,super
|-- 由于静态的声明较长,建议少用
12. 实例变量(对象,非静态)和类变量(static)的区别 *****
|-- 实例变量,跟随对象堆内存存储
|-- 类变量,是随类的加载而加载
|-- 实例变量,类变量,都有默认值
|-- 实例变量,只能对象调用,类变量即可对象调用,也可以类名调用(强烈推荐)
|-- 实例变量,跟随对象存储堆内存,比类变量进内存要晚些
|-- 类变量优先于对象存在于内存中,生命周期最长
13. 继承 extends
|-- 类与类之间产生了关系,继承关系
|-- 好处:代码减少了,复用性提高
|-- 好处:继承的出现,让类与类之间产生了关系,正是这个关系,导致了面向对象第三个特征多态
|-- 建立子类对象的时候,子类有,就用子类的,子类没有,用父类的
14. 继承中成员变量的特点
|-- super超级,表示父类的存储空间引用
|-- 调用父类的成员变量,super.成员变量
|-- 区分子类父类成员变量,重名的情况
15. 继承中成员方法的特点
|-- 子类中出现了和父类一模一样的方法,子类重写了父类方法 override
|-- 保证权限大于等于父类的权限
|-- 扩展功能,继承父类,覆盖方法,沿袭父类功能,加入子类自己的新功能
16. 继承中构造方法特点
|-- 子类中所有的构造方法,必须访问父类中构造方法,java中默认访问父类空参数的
|-- 如何访问父类构造方法呢?super(参数列表)
|-- this() super()能否共存
17. final关键字
|-- 可以修饰成员变量,成员方法,局部变量
|-- 被final修饰的变量,其实是一个常量,不能在修改值
|-- 被final修饰的类,是一个最终类,没有子类了
|-- 被final修饰的方法,是一个最终方法,不能再被重写了
|
|