---------------------- QQ:371524846 期待与您交流! ----------------------
一、面向对象和面向过程
面向对象:
面向对象是相对面向过程而言。所以说:面向对象是基于面向过程的。 面向对象和面向过程都是一种思想。 面对过程: 强调的是功能行为。 面向对象: 将功能封装进对象。 面向对象的三个特征:封装、继承、多态。 以后开发:其实就是找对象使用,没有对象,就创建一个对象。 找对象,建立对象,使用对象,维护对象的关系。耦合:类与类的关系。
内聚:就是自己实现功能的能力。 一般开发都要做到,低耦合,高内聚。基本数据类型的传递:
形参的改变对实参没有影响。 引用数据类型的传递: 形参的改变直接影响实参。 二、类和对象的关系:类:将一组对象的公共属性和行为进行抽象,并加以描述的结果。类是对象的抽象化,概括出来的产物。
对象:就是这类事物,实实在在存在的个体。 对象是类型的具体(个体)化,实例化。 描述事物,其实就是在描述事物的属性和行为。 属性对应的是类中变量,行为对应的是类中的函数(方法)。 注:属性:又叫成员变量、成员属性、对象变量、对象属性、实例变量、实例属性。 属性的定义是被类体直接包含的。属性是类的成员之一! eg: class Person { String name; int age; String sex; }其实定义类,就是在描述事物,就是在定义属性和行为,属性和行为共同成为类中的成员(成员变量和成员方法)。
注意:只在问题内抽象定义对象的语法: 类名 对象名 = new 类名();
从上面这个语法可以看出类有两个作用:定义对象,定义实体。 三、匿名对象的使用eg:
Person p = new Person(); p.display(); new Person().display(); 匿名对象只能使用一次,所以如果你创建的对象只是想使用一次的话,那么可以使用匿名对象。使用匿名对象可能还会用来调用函数。
eg: fun(new int[]{1,2,3}); fun(new Person());四、成员变量和局部变量(区别):
作用范围:
成员变量作用于整个类中; 局部变量作用于函数中,或者语句中。在内存中的位置:
成员变量:在堆内存中,因为对象的存在,才在内存中存在。 局部变量:存在栈内存中。五、封装(Encapsulation):
1.封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。
好处:将变化隔离;便于使用;提高重用性;提高安全性。2.封装原则:
将不需要对外提供的内容都隐藏起来。 把属性都隐藏,提供公共方法对其访问。3.Time类说明封装性(hour、minute、second)
要求:所有的属性都必须是private、方法是public、类也是public 要求:为所有的属性添加getter/setter,即访问器和设置器。 如果属性名字叫name,那么它的getter/setter方法名字分别是:getName()、setName() 其实getName有返回值,但没有参数; setName()没有返回值,但有参数。 4.使用private完成封装,使用public提供公有访问接口,即让属性私有,提供公有getter/setter 成员访问权限比较:权限大小
成员修饰符 public protected default(默认) private
同一个类中 OK OK OK OK
同一个包中 OK OK OK NO
子类访问 OK OK NO NO
不同包中 OK NO NO NO
六、 构造函数:(1) 特点:
a.函数名与类名相同; b.不用定义返回值类型; (定义时的特点) c.不可以写return语句。 d.只能使用new来调用。(是调用时的特点) 作用: 给对象进行初始化(通常这么用). 注意: 多个构造函数是以重载的形式存在的。 (2) 默认构造函数 当一个类没有构造函数时,编译器会为这个类添加一个public的,而且 是无参、还无内容的构造器。 匿名调用对象的属性没有意义,调用功能(方法)有意义。七、this 关键字:
(1) this 用法一: 看上去,适用于区分局部变量和成员变量同名情况。
【this为什么可以解决这个问题?this 到底代表的什么?】 this:就代表本类的对象,到底代表哪一个呢? this代表它所在函数所属对象的引用。 简单说:哪个对象在调用this所在的函数,this就代表哪个对象。 this 用法二:用于构造函数之间进行互相调用。(2) 注意:this调用语句,必须是在构造函数中的第一行,而且只能在构造函数中使用。
---------------------- QQ:371524846 期待与您交流! ----------------------