类的定义:类是用来对一个实体(对象)进行描述。
定义格式:在Java中定义类时需要用到class关键字,如
//创建类
class ClassName{
field;//字段(属性)或者成员变量
method;//行为或者成员方法
}
class为定义类的关键字,className为类名,{}为类的主体。
类中包含的内容称为类的成员。属性主要是用来描述类的,称为类成员属性或类成员变量。
方法主要说明具有哪些功能,称为类的成员方法。
注意事项: 1.类名注意采用大驼峰定义
2.成员前写法统一用public
3.此处写的方法不带static关键字。
类的实例化
定义 :用类类型创建对象的过程,称为类的实例化,在java中采用new关键字,配合类名来实例化对象。
输出结果:
阿黄:旺旺旺...
阿黄:摇尾巴...
赛虎:旺旺旺...
赛虎:摇尾巴...
this引用 :
Java中提供了this关键字,this关键字总是指向调用该方法的对象。
根据this出现位置的不同,this作为对象的默认引用有两种情形:
a.构造器中引用该构造器正在初始化的对象
b.在方法中引用调用该方法的对象
为什么要有this引用:
1.形参名不小心与成员变量名相同:
public void setDay(int year, int month, int day){
year = year;
month = month;
day = day;
}
2.三个对象都在调用setDate和printDate函数,但是这两个函数中没有任何有关对象的说明,setDate和printDate函数如何知道打印的是哪个对象的数据呢?
this引用的特性:
1.this的类型:对应类型引用,即哪个对象调用就是哪个对象的引用类型
2.this只能在成员方法中使用
3.在“成员方法”中,this只能引用当前对象,不能再引用其他对象
4.this是“成员方法”第一个隐藏的参数,编译器会自动传递,在成员方法执行时,编译器会负责将调用成员方法 对象的引用传递给该成员方法,this负责来接收
对象的构造
通过上述例子发现两个问题:
1. 每次对象创建好后调用SetDate方法设置具体日期,比较麻烦,那对象该如何初始化?
2. 局部变量必须要初始化才能使用,为什么字段声明之后没有给值依然可以使用?
构造方法
概念:构造方法(也称为构造器)是一个特殊的成员方法,名字必须与类名相同,在创建对象时,由编译器自动调用,并且 在整个对象的生命周期内只调用一次。
注意:构造方法的作用就是对对象中的成员进行初始化,并不负责给对象开辟空间。
构造方法特性 :
1. 名字必须与类名相同
2. 没有返回值类型,设置为void也不行
3. 创建对象时由编译器自动调用,并且在对象的生命周期内只调用一次(相当于人的出生,每个人只能出生一次)
4. 构造方法可以重载(用户根据自己的需求提供不同参数的构造方法)
上述两个构造方法:名字相同,参数列表不同,因此构成了方法重载。
5. 如果用户没有显式定义,编译器会生成一份默认的构造方法,生成的默认构造方法一定是无参的。
上述Date类中,没有定义任何构造方法,编译器会默认生成一个不带参数的构造方法。
6.构造方法中,可以通过this调用其他构造方法来简化代码
注意:this(...)必须是构造方法的第一条语句 。