2.类和对象的定义与使用

类名称 对象名称=new 类名称();
格式二:先声明对象,然后实例化对象
类名称 对象名称=null;
对象名称=new 类名称();
例:
class Dog{//创建一个狗类public String color;public String name;public int age;public void barks(){System.out.println(name+":汪汪汪~");}public void wag(){System.out.println(name+":摇尾巴~");}}public class J1103 {public static void main(String[] args) {Dog dog1 = new Dog(); //通过new实例化对象dog1.name = "阿黄";dog1.color = "黄";dog1.barks();dog1.wag();Dog dog2 = null;//这里代表dog2这个引用不指向任何对象dog2=new Dog();dog2.name = "阿黑";dog2.color = "黑";dog2.barks();dog2.wag();}}
定义了一个类,就相当于在计算机中定义了一种新的类型 。
上述例子用类 类型创建对象的过程,称为类的实例化 。
当实例化了以后,狗这个类就一个实体了,是某只叫阿黄的黄狗,会汪汪汪和摇尾巴 。
运行结果:
关于类的注意事项:
1. 一般一个文件当中只定义一个类
2. main方法所在的类一般要使用修饰(注意:默认会在修饰的类中找main方法)
3. 修饰的类必须要和文件名相同
4. 不要轻易去修改修饰的类的名称,如果要修改,就这样修改:
3.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) {// 构造三个日期类型的对象 d1 d2 d3Date d1 = new Date();Date d2 = new Date();Date d3 = new Date();// 对d1,d2,d3的日期设置d1.setDay(2020, 9, 15);d2.setDay(2020, 9, 16);}}
以上代码定义了一个日期类,然后main方法中创建了三个对象,并通过Date类中的成员方法对对象进行设置和打印,代码整体逻辑非常简单,没有任何问题 。
但是细思之下有以下两个疑问:
1. 形参名不小心与成员变量名相同:
public void setDay(int year, int month, int day){year = year;month = month;day = day;}
2. 三个对象都在调用和函数,但是这两个函数中没有任何有关对象的说明,和函数如何知道打印的是那个对象的数据呢?
这时候就需要this引用来发挥作用了。
1.什么是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);}}
注意:this引用的是调用成员方法的对象 。
public static void main(String[] args) {Date d = new Date();d.setDay(2020,9,15);d.printDate();}
现在知道了this的重要性,为了保险起见,无论当前代码需不需要用this,我们都应当主动在能加的地方加上this 。
2.this引用的特性
1. this的类型:对应类类型引用,即哪个对象调用就是哪个对象的引用类型
2. this只能在"成员方法"中使用
3. 在"成员方法"中,this只能引用当前对象,不能再引用其他对象
4. this是“成员方法”第一个隐藏的参数,编译器会自动传递,在成员方法执行时,编译器会负责将调用成员方法对象的引用传递给该成员方法,this负责来接收
4.对象的构造及初始化 4.1 构造方法的概念及作用