🏆文章导读
本篇文章主要对什么是类,什么是对象,类和对象的区别,什么是实例化,以及this的说明及用法进行一个详细的讲解,主要的重点是 this 的用法
面向对象和面向过程概述
面向对象:面向对象是模型化的,你只需要抽象出一个类,就像一个封闭的盒子,在这里拥有数据也拥有解决问题的方法,需要什么功能直接使用就可以了,不必一步一步的去实现,至于这个功能是如何实现的,管我们什么事?我们会用就可以了,面向对象的底层其实还是面向过程,把面向过程抽象成了类,然后封装,以方便我们使用
面向过程:面向过程是具体化的,流程化的,解决一个问题,需要一步一步的去分析,一步一步的实现
面向对象和面向过程的区别
面向过程:
优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、Linux等一般采用面向过程开发,性能时最重要的因素
缺点:没有面向对象易于维护,易复用、易扩展
面向对象:
优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态的特性,可以设计出低耦合的系统,是系统更加灵活,更加易于维护
缺点:性能比面向对象低
类和对象
类的定义:类是用来对一个实体或对象进行描述的,他与C语言的结构体很类似,在类中主要是为了描述这个实体的属性和功能,下面通过一个代码来进行讲解:
再次总结:
注意事项:
1、类名采用大驼峰形式书写
2、成员前统一写public前缀
什么是对象:一张图解决
以上是在Studen这个类中定义了一个main方法,从而对类中的成员变量和成员方法进行调用,当然你也可以在重新定义一个类,在新的类中进行调用,但是,最好一个文件当中只定义一个类!
在这里,我还想讲一下关于在new一个对象时,对象在堆上开辟空间的现象,因为小编曾经在这里有这样一个困扰->
类和对象的区别
1、类只是一个形式或者说模型一样的东西,只是为了对一个东西的属性以及行为进行描述。不要过度去理解它的意思
2、类是一种自定义类型也属于引用类型,可以用来定义变量
3、一个类可以实例化多个对象 ,实例化的对象占用实际的堆中的物理空间,存储类中的成员变量,其实类就像一张设计图,只是一张图纸而已,并不是什么实际的东西,但实例化出来的对象才能存储实际的数据,占用物理空间
总结注意事项:
1、new关键字用于创建一个对象的实例
2、使用==.==来访问对象中的属性和方法
3、同一个类可以创建多个实例
4、一般一个文件当中只定义一个类
5、main方法所在的类一般要使用public修饰(因为Eclipse会在public修饰的类中找main方法,而上面我的代码中没有在类前加public,这个要注意)
6、public修饰的类必须要和文件名相同
7、不要轻易去修改public修饰的类的名称,如果要修改的话要通国工具进行修改,下面进行图解演示。
什么是实例化
定义了一个类,因为类是引用数据类型的,也就相当与定义了一个新的类型,与int,double,float一样,只不过他们只基本数据类型,是内置的类型,而类则是我们定义的一个新类型而已,这个类型的名字是根据我们自己定义的,但是要注意,我们所说的定义一个新类型是指只是定义了一个新的类型名字,类他是属于引用数据类型的。
用类所创建对象的过程,称为类的实例化在Java中采用new关键字,配合类名来实例化对象,例如上面:new Student()
但是有些同学经常对象,引用,实例化分不清不理解,下面为大家再系统的讲解一些:
this的引用
对于this的作用,概念不容易理解,下面用代码进行讲解,最后为大家进行总结。
public class Date {
public int year;
public int month;
public int day;
public void setDate(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 date1 = new Date();
Date date2 = new Date();
//对date1,date2进行赋值
date1.setDate(2023,4,23);
date2.setDate(2023,4,22);
//打印date1,date2;
date1.printDate();
date2.printDate();
}
}
上面的代码创建了一个日期的类,然后在main方法中实例化了三个对象,然后通过调用类中的方法对日期进行了赋值,最后调用类中的printDate方法进行打印。看似没有什么问题,其实是存在一些隐形的问题的。例如:
1.形参名称与类中的成员变量名相同怎么办呢?
2.那方法体中到底是谁给谁赋值呢?成员变量给参数变量?参数给参数?参数给成员变量?成员变量给参数?
好麻烦呀😅对不对,直接运行一下看结果:
全部都时0/0/0,那么这样就清楚了,原来这里是参数给参数进行了赋值,那么如果在参数名与成员变量名相同的情况下,如对类中的成员变量进行赋值呢?下面就用到了this的引用。
比如在这些变量前加一个this的话,看一下结果
加上this后就成功打印出了想要的结果,请看图讲解:
这就说明了this引用的是调用当前方法的对象,谁调用了这个方法,这个this指向的就是谁谁谁!!!
this的引用特性
1、this的对象:即那个对象调用,就指向那个对象
2、this只能在成员方法中使用
3、在成员方法中,this只能引用当前对象,不能再引用其他的对象
而this不止以上的用法,还可以在构造中使用,具体如何使用,请看下集讲解!!!😁😁😁