面向对象(特点)、局部变量与全局变量的区别、匿名对象、构造函数、
一、
1,本文档为记录练习面向对象学习的文档。
2: 面向对象的三大特点: 1)、封装:隐藏对象的属性和实现细节,仅对外提供公共访问方式,
优点:1、隔离了变化。 2、便于使用,提高了复用性。 3、提高了安全性。
原则:1、把不必要对外显示的都隐藏掉。 2、对外提供必要的公共方法作为操作接口。
(私有是封装的一种表现形式)。
2)、继承:
3)、多态: 必须有 继承 、动态方法的重写 、父类引用指向子类的对象。
3:面向对象的开发就是在寻找对象使用, 在没有对象使用的情况下, 我们应当自己创造对象使用。
也可以说是: 找对象 建立对象 使用对象 维护对象之间的关系。
二、对象与类之间的关系
类: 现实生活中对事物的描述。
对象: 这一类事物的实实在在的个体。
生活中有有一类个体:他们都会拿枪、射击、穿迷彩服、越野、杀敌等功能。------这就是一个军人的类。 类有属性(成员变量)和方法(动态属性)。
而具体到个体: 士兵1号、士兵2号、士兵3号等 就是这个类中的具体实体-----这就是一些士兵的对象。
而映射到java中 ,这些描述就是class定义的一个类
具体的对象, 就是new关键字在堆(heap)中创建的实体。
三 成员变量 与 局部变量
作用范围: 成员变量 作用于整个类的内部
局部变量 作用于方法或者语句块之中
内存中的位置 : 成员变量 存在于堆内存中,因为对象的存在而存在。 会先有系统的默认初始化(0 null), 之后才是我们定义个显示初始化。
在没有引用指向其对象的时候(及变成垃圾对象),被垃圾回收机回收后消失。
局部变量 存在于栈内存中,因为语句的执行而存在。 必须人工给予初始化,否则次变量不能使用。相关语句执行完毕后自动消失。
四、 匿名对象
如: new Car(); new Car().color = "blue"; new Car().runCar();
特点:只能使用一次, 使用之后便会变成垃圾, 等垃圾回收机回收清空内存。
匿名对象调用其属性没有意义, 调用其方法具有一定的意义。
使用情况:1)、只对对象的 方法 进行 一次调用 的时候。 这样写比较简便。 如果要对对象的多个成员进行调用,就必须给对象命名。
2)、可以将匿名对象当成参数紧传递。
构造函数:
特点:函数名与类名一致, 不能定义返回值类型, 不能使用return语句。 对象建立时就会调用与之实参相对应的构造函数。
构造函数只在构造是调用一次,之后不能重复调用, 而普通函数可以一直调用。
作用:给对象进行初始化(在默认初始化和显示初始化之后)。
注意:1、当没有写构造函数时,系统会自动给加上一个空参、空语句的构造函数, 否则,对象不能被构造出来。
2、当自定义了构造函数时,在new新对象时就必须按照相对应的形参进行创建。
3、当有多个构造函数存在时,它们以重载的方式存在, 通过new对象时传入的参数(实参)的不同来调用相应的构造函数。
在一个构造函数中可以调用(转到)另一个构造函数。