类和对象
OOP
-
OOP(object oriented programming),面向对象编程
POP(procedure oriented Programming),面向过程编程
FP(functional programming),函数式编程
-
面向对象思想就是在计算机程序设计过程中,参照现实中事物,将事物的属性特征、行为特征抽象出来,定义为程序中的一种数据类型。
-
封装:将方法和属性封装到类中,将代码封装到方法中。
-
多态:父类引用可以指向任何子类对象
类
- 类是抽象的,对象是具体的。
引用
-
引用类型的变量,简称引用。
引用是可以指向对象的,简称引用指向对象。 -
没有引用的对象:new Student();
-
没有引用的对象,无法重复使用,只能使用一次。
(引用就像一个名字一样)
-
Student stu = new Student(); 【stu就是一个引用】
-
引用、对象、类之间的关系:
例如,工厂根据风筝图纸(类),生产出了很多只风筝(对象),其中一只风筝卖给了张三,张三站在草地上,使用线(引用),可以对这只具体的风筝(对象)进行很方便的操作。
方法
-
方法异常抛出 throws
修饰符 返回类型 方法名 (参数列表) 抛出异常的类型 {}
-
方法定义在类中,属于类的成员,所以也可以叫做成员方法。类似的,类中的属性,也可以称为
成员变量
参数传递
-
形参是一种占位的表示,没有值。
-
形参、实参在内存中,都是在方法开辟的栈空间中。
-
值传递: 方法的参数是基本类型,调用方法并传参,这时候进行的是值传递。
(通过修改方法中形参的名字,来测试是值传递。)
-
传递到方法中,进行了复制又一份的操作。
(值传递,将值复制到另一个方法中的操作,变成另一个方法中的局部变量)
-
值传递,实参把自己存储的值(基本类型都是简单的数字)赋值给形参,之后形参如何操作,对形参一点影响没有。
-
局部变量的特点分析:只在方法中有效。
-
-
引用传递:方法的参数是引用类型,调用方法并传参,这时候进行的是引用传递。
- 这时候之所以称之为引用传递,是因为参数和形参都是引用类型变量,其中保存都是对象在堆中的内存地址。
- 由于引用传递,是实参将自己存储的对象地址,赋值给了形参,这时候俩个引用(实参和形参)指向了同一个对象,那么任何一个引用(实参或形参)都可以操作对象。
【这个时候就相当于,俩个遥控器,同时控制同一台电视机。】
-
值传递 :基本数据类型数值传递
引用传递 : 引用类型对象的地址值传递
- 归根到底,都是值传递。
-
s.name指的是堆中Student对象的属性值。
-
注意:有些题,原本是成员变量s.id,刁难你,就变成局部变量id了。
-
this关键字的使用场景:
\1. 区别成员变量和局部变量
\2. 调用类中的其他方法 (this表示一个当前的对象,可以省略)
\3. 调用类中的其他构造器 -
this,可以区分当成员变量和局部变量同名时;
-
this(id, name, null) : 调用多参的构造器 (this 表示构造器);
【this调用表示构造器的时候,必须在第一行。】
-
类中的非静态方法,一定要使用类的对象来进行调用,没有其他的方式!
-
public void sayHello(){ this.show();//这个this就表示当前类的对象stu 【printThis()方法】 } public void show(){ } stu里面存的是0x123,this里面存的也是0x123
-
记住 :方法被哪个对象调用,方法中的this就代表那个对象。即谁在调用,this就代表谁。
-
我们每一个人心中的this,指的是 “ 我 ” 这个汉字。