简单认识类:
类是用来对一个实体(对象)进行描述,主观描述对象所拥有的属性(成员变量),行为(行为方法)等等。
类的定义格式:
在Java中类的定义格式如下:
class classname{
field; //字段,成员变量等等
method; //方法
}
class是定义类的关键字,classname是类名,{}内是类的主体。
类中包含的属性称为类的成员变量,所包含的方法称为类的成员方法。类的成员变量以及方法都是用来描述类的属性以及行为。
注意:
1、一般一个文件只定义一个类
2、main方法所在的类要用public修饰(特别注意:eclipse会默认在被public修饰的类中寻找main方法)
3、用public修饰的类要与所创建的.java文件名一致
类的实例化:
定义一个类,就相当于在计算机上定义了一个新的类型,而用类作为类型创建对象就是类的实例化过程。
类的实例化格式:
类名 对象名 = new 类名();
注意:1、new关键字用来创建一个对象的实例
2、可以用 . 来访问类中的成员(属性,方法)
3、同一个类可以创建多个实例化对象
例:
class dog{
public String name ;
public int age;
void bate(){
System.out.println(name+"在旺旺叫....");
}
}
public class demo1 {
public static void main(String[] args) {
dog dog1 = new dog();
dog1.age = 10;
dog1.name = "阿白";
dog1.bate();
}
}
this引用
什么是this引用?
this引用指向当前对象所在的类的成员变量,直接访问对象所在类方法的成员变量
为什么要有this引用?看完一组代码我们应该就能明白了.
例:
class data{
public int year;
public int month;
public int day;
public void setData(int year,int month,int day) {
year = year;
month = month;
day = day;
}
public void printdata()
{
System.out.println(year +" "+month +" "+ day);
}
}
public class demo2 {
public static void main(String[] args) {
data d1 = new data();
data d2 = new data();
data d3 = new data();
d1.setData(2024,4,22);
d2.setData(2023,4,22);
d3.setData(2022,4,22);
d1.printdata();
d2.printdata();
d3.printdata();
}
}
如上代码的运行结果应该是怎样的?
如果你的第一反应是d1、d2、d3都能正常打印出来,那就得重新思考一下了。
仔细看setData方法中的赋值,如果成员变量名与参数变量重复了,那在赋值的时候分得清楚谁给谁赋值吗?
通过debug,我们可以知道这些变量可能你自己理得清楚,但是编译器却糊涂了,根本分辨不出两个同名变量要怎样进行操作
这时候我们就要用this引用,区分参数和成员变量。
再进行debug就会发现上述的问题解决了
this引用的特性:
1、this引用的类型为调用对象所在的类为类型(哪个引用就看引用对象所在的类)
2、this只能在成员方法中使用
3、在成员方法中,this只能引用当前对象不能引用其他对象(也就是说:多个实例化对象中的this引用的并不是同一个成员变量)
构造方法
类的特殊成员方法
特点:
1、方法名与类名一致,创建实例化对象时由编译器自动调用
2、在整个对象的生命周期中只被调用一次
3、没有返回值,连void都不用设置
4、可根据代码需求进行重载(看情况是否需要设置参数)
注:构造方法不给对象开辟空间,仅仅只是对对象进行初始化。
this()必须是构造方法的第一句语句
编译器会默认给类定义一个不带任何参数的构造方法,当我们自行定义一个构造方法时编译器不再默认提供不带参数的构造方法。
在构造方法中可以用this.调用其他重载的构造方法
例:
class demotest{
public int year;
public int month;
public int day;
public demotest(int year,int month,int day){
this.year = year;
this.month = month;
this.day = day;
System.out.println("demotest(int int int)被调用了! ");
}
public demotest()
{
this(101,111,10); //调用带有三个参数的构造方法
}
}
看到最后给个赞支持一下吧!!!