自己定义类,然后用自己定义的类来创建对象
第1周 类与对象
1.1 用类制造对象
1.2 定义类1.3 成员变量和成员函数
1.4 对象初始化
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
1.1 用类制造对象
之前我们学习了如何使用系统提供的类,比如String,来创建对象和使用对象。
尤其重要的是我们理解了对象变量和普通变量的不同,对象变量是对象的管理者而非所有者,所以涉及到赋值、函数参数传递和比较都与普通变量有所不同。
现在,我们要来尝试自己定义类,然后用自己定义的类来创建对象。
充分理解类和对象的关系:类定义了对象长什么样,对象则是按照类的定义所制造出来的实体,一个类可以创建很多对象,每个对象有自己的数据。
用类制造对象
JAVA,GUI图行界面演示
Circle类
对象与类:对象是实体,类是规范,
对象=属性+服务 ;数据:属性或状态,操作:函数;
封装:把数据和对据的操作放在一起
oop特性
1.一切都是对象
2.程序就是一堆互相发送消息的对象
3.每个对象都有自己的存储空间,里面是其他的对象
4.每个对象都有一个类型
5.所有属于某个特定类型的对象,可以提供相同的服务
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
1.2 定义类
这个课时我们来学习如何自己定义类。一个类由两种东西组成:表示对象有什么的成员变量和表示对象能做什么的成员函数。
一旦定义了类,我们就可以创建这个类的多个对象,这些对象都会做那个类所定义的动作(函数),但是各自具有不同的数据。
类的语法
自动售货机:变量(参数属性,输入输出)与函数(动作)【业务逻辑】
定义类,创建对象,对象变量是对象的管理者
让对象做事“.运算符”【v.getfood();】
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
1.3 成员变量和成员函数
在没有引入类之前,变量是跟着代码走的。
代码写到哪儿,变量写在哪里,那么运行的时候变量就在那儿。
现在,写在类里的成员变量,只是一个声明,变量并不在那里,变量不在类里,变量在每一个对象里。
函数的外部调用(对象名.调用函数)
在函数中可以直接写成员变量的名字来访问成员变量
函数是通过对象来调用的【v.Money()】,这次调用建立了Money和v之间的关系,让Money的成员变量指的是v的成员变量
this(成员函数内部调用,this.调用函数)
this是成员函数一个特殊的固有的本地变量,它表达了调用这个函数的那个对象,this.price
调用函数:通过“‘.’”运算符调用某个对象的函数,在成员变量的内部直接调用自己(this)的其他函数
本地变量(定义在函数内部的变量),作用域和生存期都是函数的内部
成员变量(定义在函数外部的变量),成员变量的生存期是对象的生存期,作用域是类内部的成员函数
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
1.4 对象初始化
变量的初始化是程序安全很重要的一环。一旦创建了一个对象,有什么手段可以保证其中的每一个成员变量都有确定的初始值呢?
Java提供了多种手段来保障对象创建时的初始化,包括给每个成员变量默认的“0”值、定义初始化和构造函数。
本课时还涉及了函数重载和用this()来调用其他构造函数的方式。
对象初始化
成员变量定义初始化:成员变量在定义的地方就可以给出初始值,没有赋初值的成员变量自动获得0,对象0值表示没有管理任何对象,也可以主动给null值
定义初始化可以调用函数,甚至可以使用已经定义的成员变量。
构造函数(函数重载):如果一个成员函数的名字和类的名字完全相同,则在创建类的每个对象时都会自动调用这个函数,不能有返回类型
但是不同的构造函数的声明形式可以调用不同的构造函数,声明方式。
函数重载:一个类可以有多个函数只要它们的参数表不同,创建对象时给出不同的参数值就自动调用不同的构造函数,通过this还可以调用其他构造函数【this()】,
一个类里的同名但是参数表不同的函数构成了重载关系