1.类的定义和使用
类是用来对一个实体(对象)来进行描述的,主要描述该实体(对象)具有哪些属性,哪些功能,描述完成之后计算机就可以识别了
简单来说类就像是一个模型,用来对一个实体进行描述,限定了类有哪些成员。
类只是一个设计,实例化出的对象才能实际存储数据和占用物理空间
在Java中定义类时需要用到关键字class,比如class ClassName{},class为定义类的关键字,ClassName为类的名字,{}中的内容为类的实体。
类中包含的内容称为类的成员。属性主要是⽤来描述类的,称之为类的成员属性或者类成员变量。⽅法主要说明类具有哪些功能,称为类的成员⽅法
注意:
1.类的名字要采用大驼峰定义,成员前写法统一为public,此处写的方法不需要带static关键字。
2.一般一个文件中只定义一个类,public修饰的类的名字需要与文件名一致,同时不要轻易去修改public修饰的类的名称,如果要修改,通过开发工具修改。
2.类的实例化
2.1什么是实例化
实例化是指用你所定义的一个类,用类重新创建对象的过程,称为类的实例化
new关键字用于创建一个对象的实例,使用.来访问对象中属性和方法,同一个类可以创建多个实例
3.this关键字
this引⽤指向当前对象(成员⽅法运⾏时调⽤该成员⽅法的对象),在成员⽅法中所有成员变量的操作, 都是通过该引⽤去访问。只不过所有的操作对⽤⼾是透明的,即⽤⼾不需要来传递,编译器⾃动完成
如果形参名不小心与成员变量名相同,会发生如下
实例无法存储数据
此时三个对象都在调用setDate和printDate函数,但是此时两个函数中没有任何有关对象的说明,可以使用this引用当前对象来达到存储数据的目的,setDate和printDate函数不知道要存储或打印的是那个对象的数据,可使用this来引用当前对象,来正确存储和打印对象
关键点在于this代表的 是当前对象的引⽤,当前对象就是指:哪个对象调⽤setDay⽅法,谁就是this引⽤!
this引⽤的特性:
1. this的类型:对应类类型引⽤,即哪个对象调⽤就是哪个对象的引⽤类型 2. this只能在"成员⽅法"中使⽤3. 在"成员⽅法"中,this只能引⽤当前对象,不能再引⽤其他对象 4. this是“成员⽅法”第⼀个隐藏的参数,编译器会⾃动传递,在成员⽅法执⾏时,编译器会负责将 调⽤成员⽅法对象的引⽤传递给该成员⽅法,this负责来接收
4.对象的构造及初始化
在创建一个内部局部变量时,必须要进行初始化,否则会编译失败。
如果是对象,需要调⽤之前写的SetDate⽅法才可以将具体的⽇期设置到对象中。通过上述例⼦发现两个问题:1. 每次对象创建好后调⽤SetDate⽅法设置具体⽇期,⽐较⿇烦,那对象该如何初始化? 2. 局部变量必须要初始化才能使⽤,为什么字段声明之后没有给值依然可以使⽤?
4.1默认初始化
对于成员变量来说,如果没有进⾏初始化,会有⼀个对应的默认值,默认值遵循如下规则:
4.2就地初始化
在声明成员变量时,就直接给出了初始值。
4.3构造初始化
4.3.1构造方法概念
构造⽅法(也称为构造器)是⼀个特殊的成员⽅法,名字必须与类名相同,在创建对象时,由编译器⾃动 调⽤,并且在整个对象的⽣命周期内只调⽤⼀次。
4.3.2 构造⽅法注意事项
1. 名字必须与类名相同 2. 没有返回值类型,设置为void也不⾏ 3. 创建对象时由编译器⾃动调⽤,并且在对象的⽣命周期内只调⽤⼀次(相当于⼈的出⽣,每个⼈只能 出⽣⼀次) 4. 构造⽅法可以重载(⽤⼾根据⾃⼰的需求提供不同参数的构造⽅法)
上述有两个构造方法:名字都一样,参数个数不同,所以构成了重载。
5.如果⽤⼾没有显式定义,编译器会⽣成⼀份默认的构造⽅法,⽣成的默认构造⽅法是⽆参的。
⼀旦⽤⼾定义了其他的构造⽅法,编译器则不再⽣成
6. 构造⽅法中,可以通过this调⽤其他构造⽅法来简化代码
this(...)必须是构造方法中第一条语句,且不能形成环的调用
7. 绝⼤多数情况下使⽤public来修饰,特殊场景下会被private修饰
5.对象的打印
如果我们直接打印对象的引⽤,此时输出的结果为:类路径名@对象的hashcode值。
如果想要默认打印对象中的属性该如何处理呢?答案:重写toString⽅法即可。