类和对象
1.类定义和使用
2.类的实例化
3.this引用
1.类定义和使用
1.1 简单认识类
类是用来对一个实体(对象)来进行描述的,主要描述该实体(对象)具有那些属性(外观尺寸等),有那些功能(行为等)。
比如:狗,他是一个动物,在java中可以看成一个类别
属性:狗的名字,年龄,颜色
行为: 汪汪叫,摇尾巴
在java语言中,如何对上述狗类来进行定义呢?
1.2 类的定义格式
定义类时需要用到class
关键字
//创建类
class Dog{
field; //属性或者成员变量
method; //行为或者成员方法
}
class
为定义类的关键字,Dog
为类的名字,{}
为类的主体。
类中包含的内容称为类的成员。属性主要是用来描述类的,称之为类的成员变量,方法主要说明类具有哪些功能,称为类的成员方法。
class Dog {
//狗的属性
public String name; //名字
public int age;//年龄
public String colour;//颜色
//狗的行为
public void bark(){
System.out.println(name+"汪汪叫~~~");
}
public void wag(){
System.out.println(name+"摇尾巴~~~");
}
}
以上采用了java语言将狗类在计算机中定义完成,经过javac编译之后形成 .class
文件,在jvm
的基础上计算机就可以识别了。
注意事项:
- 一个文件当中只定义一个类
main
方法所在的类一般要用public
修饰public
修饰的类要与文件名相同
2.类的实例化
2.1 什么是实例化
定义一个类相当于在计算机中定义了一个新类型,与int
,double
类似,只不过int
,double
是java中自带的内置类型,而类是用户自定义的新类型,比如上面描述的Dog
类,就是一种自定义的新类型。有了这些类后,就可以用这些类定义实例。
用类类型创建对象的过程,称为类的实例化,java中采用new
关键字,配合类名来实例化对象。
public class Test {
public static void main(String[] args) {
Dog dog1 = new Dog();
dog1.name = "小黑";
dog1.age = 3;
dog1.colour = "黑色";
dog1.bark();
dog1.wag();
Dog dog2 = new Dog();
dog2.name = "小白";
dog2.age = 2;
dog2.colour = "白色";
dog2.bark();
dog2.wag();
}
}
输出结果:
小黑汪汪叫~~~
小黑摇尾巴~~~
小白汪汪叫~~~
小白摇尾巴~~~
上面代码中Dog
类实例化出dog1
,dog2
多个对象,并分别为它们的名字,年龄,颜色赋值,用dog1.
dog2.
的形式访问对象中的属性和方法
注意事项:
1.new
关键字用于创建一个对象的实例
2.使用 .
来访问对象中的属性和方法
3.同一个类可以创建多个实例
2.2类和对象的说明
1.类只是一个模型,用来对一个实体进行描述
2.类是一种自定义类型
3. 一个类可以实例化出多个对象,实例化出的对象占用实际的物理空间,存储类成员变量。
3.this引用
3.1为什么要有this引用
public class Date {
public int year;
public int month;
public int day;
public void setDay(int y,int m,int d){
year = y;
month = m;
day = d;
}
public void printDate(){
System.out.println( year +"/" + month +"/" + day);
}
——————————————————————————————————————————————————————————————————————————
public static void main(String[] args) {
//构造两个Date类型的对象d1,d2
Date d1 = new Date();
Date d2 = new Date();
//对d1,d2设置日期
d1.setDay(2024,9,3);
d2.setDay(2024,9,4);
//打印日期中的内容
d1.printDate();
d2.printDate();
}
}
输出结果:
2024/9/3
2024/9/4
以上方法定义了一个日期(Date
)类,然后用main
方法创建了两个对象,并通过Date
类中的成员方法对对象进行设置和打印。
但如果形参名
不小心与成员变量名
相同:
public void setDay(int y,int m,int d){
year = year;
month = month;
day = day;
}
疑问:
1.那函数体中到底是谁给谁赋值?成员变量给成员变量?参数给参数?参数给成员变量?成员变量给参数?
2.两个对象都在调用setDay
和printDate
函数,那么这两个函数如何知道打印的是那个对象的数据。
因此就需要this
的引用来访问。
3.2什么是this的引用
this
引用指向当前对象,成员方法中所有成员变量的操作,都是通过该引用访问。
public class Date {
public int year;
public int month;
public int day;
public void setDay(int year,int month,int day){
this.year = year;
this.month = month;
this.day = day;
}
public void printDate(){
System.out.println( this.year +"/" + this.month +"/" + this.day);
}
________________________________________________________________________
public static void main(String[] args) {
Date d1 = new Date();
d1.setDay(2024,9,3);
d1.printDate();
}
在main函数中实例化了d1
对象,用d1.
访问了setDay和printDate两个函数,函数中的this
引用的是调用成员方法的对象,即this
引用的是对象d1
,因此加了this
之后,就会清楚的知道调用了那个对象,打印的是那个对象的数据。
3.3this引用的特性
1.this只能在成员方法中使用
2.在成员方法中,this只能引用当前对象,不能引用其他对象
3.this的类型:对应类的类型,那个对象调用就是那个对象的引用类型
如有错误和不足请大家指正~
标签:对象,month,int,Date,public,d1 From: https://blog.csdn.net/2302_78564810/article/details/141862722