类和对象
类和对象以及构造方法
什么是类
类是对现实生活最后一类具有共同属性和行为的事物的抽象;
类的特点:
类是对象的数据类型;
类是具有相同属性和行为的一组对象的集合;
什么是对象
客观存在的事物都是对象;
什么是对象的属性
属性: 对象具有的各种特征,每个对象的每个属性都有特定的值;
什么是对象的行为
行为: 对象能够执行的操作;
类和对象的关系
类: 类是对现实生活最后一类具有共同属性和行为的事物的抽象;
对象: 是能够看得见摸得着的真实存在的实体;
类的定义
类的重要性: 是java程序的组成单位;
类的组成
类的组成: 属性和行为
属性: 在类中通过成员变量来体现(类中方法外的变量)
行为: 在类中通过成员方法来体现(和main方法相比去掉static关键字)
类的定义步骤
(1)编写类
(2)编写类的成员变量;
成员变量:类中方法外的变量就是成员变量;
(3)编写类的成员方法
对象的使用
创建对象
格式: 类名 对象名 = new 类名();
范例: Phone p = new Phone();
使用对象
使用成员变量: 对象名.变量名;
范例: p.brand;
使用成员方法: 对象名.方法名();
范例: p.call();
this关键字
this: 表示当前类的对象;在普通的方法中,this总是指向调用该方法的对象;
在构造方法中,this总是指向正要初始化的对象;
可以使用this调用重载的构造方法,但是必须位于构造方法的第一句代码;;
this不能用在static方法;
this可以在方法内部获取对象的属性信息
this可以区分局部变量和成员变量;
构造方法
构造方法是一种特殊的方法,``
执行时机: new创建对象的时候,自动调用;
功能: 主要完成对象数据的初始化;
格式: public 类名() {}
当main方法执行到Student()时,构造方法里面输出了"无参构造方法",并且创建了对象stu;
构造方法的注意事项
(1)构造方法的创建
如果没有定义构造方法,系统将给出一个默认的无参数的构造方法;
如果定义了构造方法,系统将不再给出默认的构造方法;
(2)构造方法的重载
如果自定义了构造方法,还要使用无参数的构造方法,就必须要写一个无参数构造方法;
(3)推荐的代码风格
无论是否使用无参构造方法,都要手工书写无参构造方法;
(4)构造方法有返回值,但不能定义返回值类型,不能在构造方法里面return一个返回值;
(5)
(构造)方法重载
在同一个类中具有多个方法名相同但是参数不同的方法,就是方法重载;
重载的不同方法:
改变参数的个数;
改变参数的数据类型;
注意:方法的重载和返回值类型无关;
标准类的写法
成员变量
使用private修饰;
构造方法
提供一个无参构造方法
提供一个带参数的构造方法;
成员方法
提供每一个成员变量对应的setXxx()/getXxx()方法;
提供一个显示对象信息的show()方法;
创建对象并为其成员变量赋值的两种方式
无参构造方法创建对象后使用**setXxx()**赋值;
参构造方法直接创建带有属性值的对象;
创建对象内存分析
栈:JVM中一块很小的内存,
特点: 存储基本数据类型变量和引用数据类型的引用;
堆:
特点: 存储的是类中的对象或者数组;
方法区:
默认的构造方法创建对象的三个步骤:
Person p = new Preson();
1.new的时候在堆中申请一块内存空间,假设这个空间的地址为0x111111,这时系统会给成员变量一个默认的初始值null或者0;
2.执行这个构造方法;
3.返回堆中对象的地址给栈中相关的变量;;即p指向这个地址值0x111111; p = 0x111111;
带参的构造方法创建对象的四个步骤:
Person p = new Preson(“小明” , 18);
1.new的时候在堆申请一块内存空间,假设这块空间的地址是0x111,这时系统会给成员变量默认的初始值null或者0;
2.成员变量显式初始化;
(假设成员变量有String name;int age;这时 name = “小明”; age = 18;)
3.执行这个构造方法;
4,返回堆中对象的地址给栈中相关的变量;;