- 类是抽象的,概念的,代表一类事物,比如人类,猫类..即它是数据类型
- 对象是具体的实际的,代表一个具体事物,即实例。
- 类是对象的模板,对象是类的一个个体,对应一个实例
-
public class Target{ public static void main(String[] args) { //使用OOP面向对象解决 //实例化一只猫【创建一只猫对象】 //1.new Cat() 创建一只猫 //2.Cat cat1 = new Cat();把创建的猫赋给cat1 //3.cat1 就是一个对象 Cat cat1 = new Cat(); cat1.name = "小白"; cat1.yello = "白色"; cat1.age = 3; Cat cat2 = new Cat(); cat2.name = "小花"; cat2.yello = "花色"; cat2.age = 100; System.out.println("第1只猫的信息:"+cat1.name+" "+cat1.yello+" "+cat1.age); System.out.println("第2只猫的信息:"+cat2.name+" "+cat2.yello+" "+cat2.age); } } class Cat{ String name;//属性 int age; String yello; }
-
对象在内存的存在形式,String类型不是基本类型,基本类型就直接保存在堆中
-
成员变量=属性,属性可以是基本数据类型,也可以是引用数据类型(对象,数组)。
-
属性细节
-
属性的定义语法同变量,访问修饰符 属性类型 属性名;
-
访问修饰符:控制属性的访问范围,有四种:public,proctected,默认,private
-
属性如果不赋值,有默认值,规则和数组一致。
-
-
如何创建对象
-
Cat cat;//声明对象cat,还没有在堆区开辟空间。
-
cat = new Cat();//创建,开辟空间,并把地址赋给cat。
-
直接创建:Cat cat = new Cat();
-
-
类和对象的内存分配机制
-
栈:一般存放基本数据类型(局部变量)
-
堆:存放对象(数组等)
-
方法区:常量池(常量,比如字符串),类加载信息
-
-
java创建对象的流程
Person p = new Person(); p.name = "jack"; p.age = 10;
-
先加载Person类信息 (属性和方法信息,只会加载一次)
-
在堆中分配空间,进行默认初始化(同数组)
-
把地址赋给p,p指向对象
-
进行指定初始化
-