面向对象(object oriented programming)
对象(object):对问题中的事物进行抽象化,对现实事物的抽象映射。
面向对象:把现实中的事物抽象为对象,每个对象都是唯一的,且都拥有自己的属性和方法,通过调用对象的属性和方法来解决问题。
简单的例子:
eg1: 用面向对象的思想解决将大象塞进冰箱
冰箱是一个对象;
大象是一个对象;
冰箱的功能:开门,关门,装东西;
public class elephant{ // 创建一个对象为大象
public void eat(){} // 大象有方法为吃东西
}
public class bridge{ // 创建一个对象为冰箱
public void open(){} // 创建一个开门的方法
public void close(){} // 创建一个关门的方法
public void putIn(){} // 创建一个放东西进去的方法
}
eg2:使用面向对象的方式来解决养猫问题
//实例化一只猫
Cat cat1 = new Cat; // 创建一只猫
cat1.name = "小白";
cat1.age = 10;
cat1.color = "白色";
Cat cat2 = new Cat // 创建第二只猫
cat2.name = "小红";
cat2.age = 5;
cat2.color = "黑色";
//访问对象属性
System.out.println(“第一只猫的信息:”+cat1.name+cat1.age+cat1.color);
System.out.println(“第二只猫的信息:”+cat2.name+cat2.age+cat2.color);
由此可见,面向对象的核心就是每个对象间都互相保持独立,在建立对象模型的阶段只需要专注每个类的方法和属性,不需要考虑如何实现功能。面向对象的好处在具有很强的延展性,面向对象就是把现实问题抽象为对象,通过调用每个对象的属性或功能去解决问题。对象就是一个具体的实例。
对象在内存中的存在形式
以eg2中的cat1为例:
根据数据类型属性来存放数据
名字在栈中指向一个地址(0x0011为例)
String类型属于引用类型,在堆中只储存地址(0x0022为例),指向方法区常量池中的空间。
int类型直接存放在堆中(12直接存放在堆中)。
在执行 创建对象(new) 的过程中,会把类的信息加载到方法区(1.加载属性信息 2.加载方法信息)
属性与成员变量的概念
1.从概念或叫法来看,成员变量 = 属性 = field字段 (即成员变量是用来表示属性的)。
eg:Car(name,pirce,color)
2.属性是类的一个组成部分,一般是基本数据类型,也可以是引用类型(可以是数组等数据类型)
eg:String [] master
注意事项和细节说明
public class PropertiesDetails{
public static void main(String [] args){
// p1 是对象的名字 例:小明是一个姓名,实体是小明
Person p1 = new Person();
// 对象的属性默认值遵循数