💕粗缯大布裹生涯,腹有诗书气自华💕
作者:Mylvzi
文章主要内容:Java学习之--类和对象
类和对象
类的实例化:
1.什么叫做类的实例化
利用类创建一个具体的对象就叫做类的实例化!
当我们创建了一个类,实际上就是创建了一个“自定义类型”(和C语言中的结构体类似),是一种新的类型。既然是类型,就和Int,char一样可以进行变量的创建。创建的变量是一种引用变量,变量内部存储的是创建对象的地址!
2.注意事项
1.类类似于结构体,是一种自定义类型,通过.操作符访问成员变量
2.类可以创建多个对象,比如此处还可以创建stu2,stu3.......
3.类:理解为图纸,不占用物理地址;但是通过图纸创建出房子的时候,房子(对象)占用物理地址。
this的引用
先来看两个问题:
正确代码:
// 创建一个学生类 class Stu{ public String name; public String sex; public int age; // 所有对成员变量进行操作的地方都要添加this,代表是当前对象调用的方法!!! // this写在方法内部 public void setStu(String name,String sex,int age) { this.name = name; this.sex = sex; this.age = age; } public void printStu() { System.out.println(this.name+" "+this.sex+" "+this.age); } } public class Test2 { public static void main(String[] args) { // 实例化一个stu1的对象 Stu stu1 = new Stu(); Stu stu2 = new Stu(); Stu stu3 = new Stu(); stu1.setStu("lvzi","nv",18); stu2.setStu("biandu","nan",19); stu3.setStu("栀子","nv",20); stu1.printStu(); stu2.printStu(); stu3.printStu(); } }
1.定义:
this引用的作用就是告诉编译器我当前我调用的是哪个对象,对当前对象的成员变量进行操作!!!避免了很多可能出现的错误
2.注意事项:
1.this只能在成员方法内部使用。
2.this只能调用当前对象,不能再调用另一个对象
3.实际上,成员方法内部其实是有“对象”这个参数的,只不过一般被省略!!!
4.this是Java中的一个关键字,表示对象的引用
对象的构造和初始化
1.局部变量和成员变量的初始化
同时,如果我们想要对成员变量进行初始化,需要调用成员方法:
可是如果每次都需要调用方法来初始化对象是否过于麻烦?有没有其他方法可以初始化对象呢?答案是可以的,接下来就讲解初始化对象的一种特殊方法-->构造方法!!!
2.构造方法:
是一种用来初始化对象的特殊方法
注意事项 :
1.不需要写返回值
2.只负责初始化对象,并不负责给对象开辟空间
3.方法名必须和类名相同!!!
4.创建完对象,编译器会自动进入到构造方法内部(代码演示)
4.构造方法之间也可以构成重载 (带参数的构造方法和不带参数的构造方法之间构成重载)
// 带参数的构造方法 public Stu(String name,String sex,int age) { this.name = name; this.sex= sex; this.age = age; } // 利用带参数构造方法,只需在创建对象时传入参数即可 // 编译器会进入到构造方法,帮助你初始化成员对象 Stu stu1 = new Stu("绿子","女",18); stu1.printStu();
5.如果用户没有定义构造方法,编译器会自动创建一个无参的构造方法,这个默认的构造方法也可以初始化成员变量,只不过是利用默认值进行初始化的(解释了为什么字段可以不初始化也能通过编译)
6.如果本身就存在带参数的构造方法,编译器并不会自动创建一个构造方法!所以,在有带参数的构造方法时,实际参数必须传参!!!
7.通过this调用其他构造方法(简化初始化代码)
注意:
1.this必须写在第一行!!!不是第一行就无法通过编译
2.不能呈环!!!
3.绝大多数情况下构造方法使用public来修饰,特殊情况下使用private修饰
4.this是一种引用,哪个对象调用,就引用哪个对象,this此时就是一种引用数据类型,存储的是指向对象的地址!!!
8.快速创建构造方法 (常用)
总结:所谓的构造方法就是一种用来初始化对象的特殊方法!!!方法名必须和类名相同,通过带参数的构造方法可以快速进行对象的初始化!!!
JavaSE学习之--类和对象(二)+https://developer.aliyun.com/article/1413484