java学习笔记之面向对象(一)
面向对象
面向过程和面向对象
面向过程
强调的是过程(动作)
面向对象
强调的是对象(实体)
特点:
- 面向对象是一种常见的思想,符合人们的思考习惯。
- 面向对象的出现,将复杂问题简单化。
- 面向对象的出现,让曾经在过程中的执行者,变成了对象中的指挥者。
有对象用对象
没对象造对象
想用功能
先找对象
特征
(有特征才能说用了面向对象的思想)
- 封装
- 继承
- 多态
类与对象的关系
类
用java语言对现实生活中的事物的描述
对于事物描述通常关注两方面:
- 属性——通过数值
- 行为——通过动作(功能)
只要明确该事物的属性和行为并定义在类中即可
对象
其实就是该类事物实实在在存在的个体
在java中通过new创建
类与对象的体现
例如要描述一辆小汽车:
- 属性:
轮胎数
颜色 - 行为:
运行(在java中,函数表示此功能)
class Car
{
int num;
String color;
void run()
{
System.out.println(num+"..."+color);
}
}
class CarDemo
{
public static void main(String[] args)
{
//在计算机中创建一个car的实例。(通过new关键字)
Car c = new Car();// “c”就是一个类类型的引用变量,指向了该类的对象。
c.num = 4;
c.color = "red";
c.run();//要使用对象中的内容可以通过“对象.成员”的形式来完成调用。
}
}
细节:
定义类,其实就是在定义类中的成员。
成员:
成员变量——属性
成员函数——行为
对象的内存体现
堆内存当中存放的都是对象
对于字符串数据类型,若要定义在堆中,默认初始值为空。
成员变量和局部变量的区别
-
成员变量定义在类中,整个类中都可以访问。
局部变量定义在函数,语句,局部代码块中,只在所属的区域有效。 -
成员变量存在于堆内存的对象中。
局部变量存在于栈内存的方法中。 -
成员变量随着对象的创建而存在,随着对象的消失而消失。
局部变量随着所属区域的执行而存在,随着所属区域的结束而释放。 -
成员变量都有默认初始化值。
局部变量没有默认初始化值。
误区:
赋值并不是给类中的内容赋值,而是给对象中的内存赋值。
类类型参数:
类类型的变量一定指向对象。要不就是null。
匿名对象:
没有名字的对象
其实就是定义对象的简写格式。
例如:
将
Car c=new Car();
c.run();
写成:
new Car().run();
什么时候可以用匿名对象:
- 当对象对方法仅进行一次调用的时候,就可以简化成匿名对象。
- 匿名对象可以作为实际参数进行传递。