类和对象的阐述<1>

类和对象的阐述<1> 目录1.类和对象的引入2.类的定义和使用1.类的认识2.类的定义格式3.类的实例化(对象的引出)4.如何访问对象当中的成员3.this关键字4.对象的构造及初始化1.默认初始化2.就地初始化3.构造方法初始化1.类和对象的引入Java是一门纯面向对象的一门语言在这门语言里一切皆为对象。那我们要使用Java语言就必须要熟练认识和掌握类和对象。接下来让我们看看类和对象是怎么个会事吧2.类的定义和使用1.类的认识类是用来对一个实体对象来经行描述的。比如说凳子这种东西我们就可以把他定义为一个类凳子它有品牌名字长宽高有多重等等。而名字长宽高重量这些属性就属于凳子这个类类也就相当于这些属性的集合类中也包含方法下面会讲到。那我们该怎么定义类的结构呢2.类的定义格式在Java中定义类时需要⽤到class关键字具体语法如下//创建一个类class Student{public String stuNum;public String name;public int age;public void show(){System.out.println( 该学生有在好好学习 );}}class为定义类的关键字Student为类的名字{}内为类的主体类中包含的内容称为类的成员由于定义在类当中又可以称为成员属性类当中也可以包含方法用于说明类有哪些功能称为成员方法。注意事项1.类名注意采⽤⼤驼峰定义比如定义洗衣机这个类 WashMachine。2.⼀般⼀个⽂件当中只定义⼀个类3.public修饰的类必须要和⽂件名相同3.类的实例化在2.1中讲到我们可以定义一个叫凳子的类它包含了各种属性用于描述凳子那我们就可以使用凳子这个类去实例化某个特定的实体。定义了⼀个类就相当于在计算机中定义了⼀种新的类型与intdouble类似只不过int和double 是java语⾔⾃带的内置类型⽽类是⽤户⾃定义了⼀个新的类型⽐如上述的Desk类和Student 类。它们都是类(⼀种新定义的类型)有了这些⾃定义的类型之后就可以使⽤这些类来定义实例(或者 称为对象)。⽤类类型创建对象的过程称为类的实例化在java中采⽤new关键字配合类名来实例化对象。public class Test{public static void main(String[] args){Student student1 new Student();//创建了一个Student类的对象这个对象的名字叫student1。Student student2 new Student();}}我们可以通过Student这个类去实例化多个对象每个对象都包含类中的各各属性每个对象都包含类中的属性那我们该怎么去访问这些属性类中的成员呢4.如何访问对象当中的成员public class Test {public static void main(String[] args){Student student1 new Student(); //通过new来实例化对象student1.stuNum 20260317;student1.name 小帅student1.age 18;student1.show();}我们可以通过 对象名.类成员变量成员方法 的形式来访问或修改对象中的成员3.this关键字public class Date {public int year;public int month;public int daypublic void setDay(int year, int month, int day){year year;month month;day day;}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,3,15);d2.setDay(2020,3,16);d3.setDay(2020,3,17);// 打印⽇期中的内容d1.printDate();d2.printDate();d3.printDate();}}图片这里的形参名与成员变量名相同在打印的时候年月日都为0这是为什么呢因为year,month,day定义在setDay这个方法中是局部变量在这个方法内局部变量优先使用那year year;就相当于自己等于自己给自己赋值局部变量就不会给类中的成员变量赋值成员变量就为默认的初始值0当然setDay的形参可以不与成员变量名相同但有时候我们实例化多个对象多个对象使用同一方法的时候我们不容易判断形参是给哪个对象的成员变量赋值就可能会产生问题那我们该怎么解决这种问题呢我们就需要this关键字。this是什么this引⽤ 指向当前对象(成员⽅法运⾏时调⽤该成员⽅法的对象)在成员⽅法中所有成员变量的操作 都是通过该引⽤去访问。只不过所有的操作对⽤⼾是透明的即⽤⼾不需要来传递编译器⾃动完成。图片我们将上述代码改为public void setDay(int year, int month, int day){this.year year;this.month month;this.day day;}这样我们在 d1.setDay(2020,3,15) 调用上述方法的时候方法中的this就指向对象d1(因为我们通过d1这个对象的引用去访问到了setDay这个方法)这样我们就能知道我们形参year在给d1这个对象中的成员变量year赋值同时我们也可以this.成员方法。关于this引用的特性1. this的类型对应类类型引用即哪个对象调用就是哪个对象的引⽤类型2. this只能在成员方法中使用3. 在成员方法中this只能引用当前对象不能再引⽤其他对象4. this是“成员⽅法”第⼀个隐藏的参数编译器会⾃动传递在成员⽅法执⾏时编译器会负责将 调⽤成员⽅法对象的引⽤传递给该成员⽅法this负责来接收我们也可以通过this来访问构造⽅法那么什么是构造⽅法呢4.对象的构造及初始化1.默认初始化在Java⽅法内部定义⼀个局部变量时必须要初始化否则会编译失败。但是在第三块this关键字的Date举例中我们在类中没给日期初始化在调用方法赋值时也没赋值上但还是能编译通过打印的都是0这就说明Java对我们的成员变量有默认初始化。2.就地初始化在类当中就给初始化public int year 2000;public int month 2;public int day 33.构造方法初始化构造⽅法(也称为构造器)是⼀个特殊的成员⽅法名字必须与类名相同在创建对象时由编译器⾃动 调⽤并且在整个对象的⽣命周期内只调⽤⼀次。public class Date {public int year;public int month;public int daypublic void setDay(int year, int month, int day){this.year year;this.month month;this.day day;}public Data(){}public Date(int year, int month, int day){this.year year;this.month month;this.day day;}public void printDate(){System.out.println(year / month / day);}public static void main(String[] args) {// 构造⽇期类型的对象 d1Date d1 new Date(200045)// 打印⽇期中的内容d1.printDate();}}图片之前我们使用Date d1 new Date();的时候是调用的无参数的构造方法Date d1 new Date(200045)为有参数的构造方法这两种构造方法构成方法的重载构造⽅法注意事项1.名字必须与类名相同2.没有返回值类型设置为void也不⾏3.创建对象时由编译器⾃动调⽤并且在对象的⽣命周期内只调⽤⼀次(相当于⼈的出⽣每个⼈只能 出⽣⼀次)4.构造⽅法可以重载(⽤⼾根据⾃⼰的需求提供不同参数的构造⽅法5.当只有有参数的构造方法时就不能Date d1 new Date();这样写要传参。