一. 面向对象概述
面向过程:强调的是功能行为
面向对象:将功能封装进对象,强调具备了功能的对象
面向对象的特征:封装、继承、多态
二. 类与对象的关系
1. 定义类
Java中用类class来描述事物,描述事物其实就是在描述事物的属性和行为。
属性:对应类中的成员变量
行为:对应类中的成员函数
定义类就是在定义类中的成员(成员变量和成员函数)
2. 创建对象
在Java中通过new操作符来完成,其实就是在堆内存中产生一个实体,类类型变量指向对象。
指挥对象的用法:对象.对象成员
3. 对象内存结构
class Car
{
//成员变量color和num
String color="红色";
int num=4;
//成员函数run()
void run()
{
System.out.println(color+".."+num);
}
}
class CarDemo
{
public static void main(String[] args)
{
Car c1=new Car();
c1.color="blue";
Car c2=new Car();
}
}
三. 成员变量和局部变量
1. 作用范围
成员变量定义在类中,在整个类都可以被访问;
局部变量只定义在局部范围内,如:函数内、语句内等;
2. 内存
成员变量随着对象的建立而建立,存在于对象所在的堆内存中;
局部变量存在于栈内存中,变量作用的范围结束,变量空间会自动释放;
3. 默认初始化值
成员变量有默认初始化值;
局部变量没有默认初始化值;
四. 匿名对象
1. 使用方式1
当对对象的方法只调用一次时,可以用匿名对象来完成,这样写比较简化;
如果对一个对象进行多个成员调用,必须给这个对象起一个名字。
class CarDemo
{
public static void main(String[] args)
{
Car q=new Car();
show(q);
}
//需求:汽车修配厂,对汽车进行改装
//将来的汽车改成黑色,轮胎数改成3
public static void show(Car c)
{
c.num=3;
c.color="black";
c.run();
}
}
匿名对象用法:
class CarDemo
{
public static void main(String[] args)
{
show(new Car());
}
//需求:汽车修配厂,对汽车进行改装
//将来的汽车改成黑色,轮胎数改成3
public static void show(Car c)
{
c.num=3;
c.color="black";
c.run();
}
}
2. 使用方式2
可以将匿名对象作为实际参数进行传递