面向对象是一种将属性与功能都封装进类的一种思想,这种思考方式相较于面向过程更符合人们的思考习惯。
当我们得到需求时:应该先去找具有所需功能的对象来用,若找不到则应该自己创建一个具有此功能的对象,开发过程就是不断的去创建具有所需动能的对象和调用对象,指挥对象做事。
面向对象编程就是将现实生活中的事物封装成类,而现实生活中的业务就可看成是一个个对象中的功能经过编写与调用,组织成现实生活中的业务。
类与对象的区别:
类是一种抽象的概念,可以看成是描述一种类型的事物,而对象则是该类中是确确实实存在的个体。
如:这个car类,它就代表了汽车这类型的事物,他只声明了每个汽车都有名字,都有颜色,但没具体到什么名字,什么颜色,只是一个抽象的概念。
而对象通过 Car car = new Car("大众","红色");这段代码创建了一个车,它是红色的,大众这个品牌的,具体到了个体,在现实生活中确确实实存在的个体。
public class Car {
private String name;
private String color;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public Car(){}
public Car(String name, String color) {
super();
this.name = name;
this.color = color;
}
public void start(){
System.out.println("启动");
public void stop(){
System.out.println("刹车");
}
}
}
一、堆内存与栈内存:
堆和栈的功能可以用一句话来概括:堆主要用来存放对象的,栈主要是用来执行程序的,存在于栈内存中的数据会被自动回收,而存在于堆内存中的数据要通过java的垃圾回收器回收。
堆内存用来存放由 new 创建的对象和数组,而栈则用来存放局部变量。
二、成员变量与局部变量:
成员变量定义在类中,在整个类中都可以被访问,成员变量都有默认值,且其存在于堆内存中,随着对象的创立而创立,消亡而消亡。
局部变量定义在类的函数或语句类,且其没有默认值,所以在定义局部变量时要赋初始值,要不然会报错。且其存在于栈内存中,作用的范围结束,变量空间会自动释放。
三、this关键字:
当方法中成员变量和局部变量重名时,使用this关键字,被this关键字修饰的变量表示的是该方法所在类中的成员变量。
如:
public Car(String name, String color) {
super();
this.name = name;
this.color = color;
}
在本类中自己当作参数传递时,也可以用this。
如:
class A {
public A() {
new B(this).print();// 调用B的方法
}
在构造函数中,通过this可以调用同一类中别的构造函数,不过this要放在第一行
如:
public Car(String name, String color) { this(name);
this.color = color;}