1. 面向对象的理解
-
面向对象是相对面向过程而言。
-
面向对象和面向过程都是一种思想。
-
面向过程:强调的是功能行为。
-
面向对象:将功能封装进对象,强调具备了功能的对象。
-
面向对象是基于面向过程的。
2. 面向对象的开发,设计和特征
-
开发的过程:其实就是不断的创建对象,使用对象,指挥对象做事情。
-
设计的过程:就是在管理和维护对象之间的关系。
-
特征:封装、继承和多态。
3. 类和对象的关系
类就是对现实生活中事物的描述;对象就是这类事物实实在在存在的个体。
Java中,描述就是class定义的类,具体对象就是对应Java在堆内存中用new建立的实体。
例:描述汽车(颜色、轮胎数)。描述事物其实就是描述事物的属性和行为。
class Car
{
String color = “red”;//描述颜色
int num = 4;//描述轮胎数
void run()
{
System.out.println(color+“..”+num);
}
}
class CarDemo
{
public static void main(String[] args)
{
Car c = new car();//c就是一个类类型变量。记住:类类型变量指向对象。
c.run();
}
}
3.1成员变量和局部变量的区别
成员变量:成员变量定义在类中,在整个类中都可以被访问;成员变量随着对象的建立存在于对象所在的堆内存中;成员变量有默认的初始值。
局部变量:局部变量只定义在局部范围内,如:函数内,语句内等;局部变量存在于栈内存中;作用范围结束,变量空间会自动释放;局部变量没有默认初始化值。
3.2匿名对象
匿名对象是对象的简化形式。
匿名对象两种使用情况:
A,当对对象的方法只调用一次时,可以用匿名对象来完成,这样写比较简化。如果对 一个对象进行多个成员调用,必须给这个对象起个名字。
B,可以将匿名对象作为实际参数进行传递。
4. 封装(Encapsulation)
-
定义:指隐藏对象的属性和实现细节,仅对外提供公共的访问方式。
-
好处:将变化隔离;便于使用;提高重用性;提高安全性。
-
原则:将不需要对外提供的内容都隐藏起来;把属性都隐藏,提供公共方法对其访问。
5. private(私有)关键字
private关键字:是一个权限修饰符;用于修饰成员(成员变量和成员函数);被私有化的成员只在本类中有效。
注意:私有仅仅是封装的一种表现形式。
对外提供访问方式是因为可以在访问方式中加入逻辑判断等语句。对访问的据进行操作。提高代码健壮性。
例:
6. 构造函数
特点:函数名与类名相同;不用定义返回值类型;不可以写return语句
作用:可以给对象进行初始化。
注意:对象一建立就会调用与之对应的构造函数。当在类中自定义了构造函数后,默认的构造函数就没有了。
构造函数的小细节:当一个类中没有定义构造函数时,那么系统会默认给该类加入一个空参数的构造函数。
构造函数与一般函数的不同:
a,在写法上有不同.
b,在运行上有不同:
-
构造函数是在对象一建立就运行。给对象初始化。而一般方法是对象调用才执行,给是对象添加对象具备的功能。
-
一个对象建立,构造函数只运行一次。而一般方法可以被该对象调用多次。
构造代码块作用:给对象进行初始化。
对象一建立就运行,而且优先于构造函数执行。
和构造函数的区别:
构造代码块是给所有对象进行统一初始化,而构造函数是给对应的对象初始化。
构造代码快中定义的是不同对象共性的初始化内容。
格式:{
执行语句;
}
7. this关键字
特点:this代表其所在函数所属对象的引用。即代表本类对象的引用。
什么时候用this关键字:当在函数内需要用到调用该函数的对象时。
this的应用:判断是否为同年龄的人
…
public boolean compare(Person p)
{
return this.age == p.age;
}
…
class PersonDemo
{
public static void main(String[] args)
{
Person p = new Person(20);
boolean b = p1.compare(p2);
System.out.println(b);
}
}
8. 补充:this语句
this语句 :用于构造函数之间进行互相调用。
this语句只能定义在构造函数的第一行。因为初始化要先执行。
This语句在构造函数间的应用举例:
-