1.构造器:
1.1 构造器的定义:
构造器相当于一个特殊方法,它的名称必须和类名一样,且没有返回值类型,构造器分为有参和无参,构造器可以重载,可以出现名称一样,但是参数不一样的情况。 类默认自带了一个无参构造器,如果为类定义了一个有参构造器,默认的无参构造器就没有了,如果还想用无参构造器,就必须手写一个无参构造器出来。
public class Student{ /**构造器*/ public Student(){ ... } }1.2 构造器的特点和常见应用场景:
构造器有什么特点:创建对象的时候,对象会去调用构造器,默认调用无参构造器,如果要调用有参构造器,创建对象的时候传参就行了。
Student s = new Student();//调用无参构造器
Student s =new Student(n:”构造器“);//调用参数为string n 的有参构造器
常见应用场景:创建对象时,同时完成对象成员变量(属性)的初始化赋值.
不调用有参构造器的时候,需要手动的对对象进行赋值
Student t1 = new Student(); t1.name=......; t1.age=......;调用有参构造器之后,只需要一行,但是效果是一样的。
Public Student(String n, int a, char s){ name = n; age =a; }Student t2 =new Student(n:"老师,a :18);2.this关键字:
2.1this关键字的简介:
this就是一个变量,可以用在方法中,来拿到当前对象。一句话说,就是this可以写在方法里面,哪个对象去调用这个方法,this就可以指代当前对象,拿到当前对象的地址。以下面代码为例,当s1调用print()方法时,this指代的就是s1,这个时候是拿到的就是s2的地址,同理,s2调用的时候,this指代s2.拿到是s2的地址。如果Student类里面定义name ,age等字段,那么this后面可以加上这些字段,类似于this.name。
Student s1 = new Student s1.print(); Student s2 = new Student s2.print();public void print() { System.out.println(this); }2.2this关键字应用场景:
this主要用来解决变量名冲突问题的
这个时候打印出来的结果是唱歌喜欢唱歌,而并非汪苏泷喜欢唱歌,因为就近原则的问题,两个name都指向唱歌,这个时候,就出现变量名冲突的情况。
在name前面加上this关键字,这样打印出来的效果就是汪苏泷喜欢唱歌。下面的才是标准的有参构造器方法。
3.实体类:
3.1什么是实体类?
是一种特殊类,类中的成员变量全部私有,并提供public修饰的getter/setter方法,还要为这个类提供一个无参构造器,有参构造器可选
3.2实体类的基本作用:
创建它的对象,存取数据(封装数据)
3.3实体类的应用场景:
在实际开发的过程中,我们并不会把业务处理的方法也放在对象中,我们只希望这个对象的本身只负责数据的存和取,对于这些业务处理,我们会定义一个单独的对象去处理,这就是软件开发中的分层思想。
4.static关键字:
4.1 static修饰成员变量:
static叫静态,可以修饰成员变量,成员方法。成员变量有无static修饰,分为两种:有static修饰的为静态变量(类变量),无static修饰的为实例变量(对象的变量),静态变量是类的全部对象共享的,属于类,在计算机中只有一份,只会加载一次,实例变量是属于每个对象的。
4.1.1认识static修饰成员变量,特点,访问机制
以对象.静态变量名去访问的结果就是始终是以最后一个对象的值赋值,如上面代码所示,
s1.name=马冬梅,s2.name=秋雅,结果println(s1.name)的时候,打印处理的值是秋雅,因为静态变量相当于类的公共变量,会重复定义,所以一般推荐以类名.静态变量的方式去访问。 以对象名.实例变量去访问就正常了,s1.age=23,println(s1.age)=23.
4.1.2静态变量的应用场景
如果某个数据只需要一份,且希望能被共享(访问,修改),则该数据可以定义成静态变量来记住。
4.2static修饰方法:
4.2.1成员方法的分类:
静态方法(有static修饰的成员方法,属于类),实例方法:无static修饰的成员方法,属于对象。
4.2.2认识static修饰和不修饰方法的区别:
可以通过类名.静态方法(推荐)和对象.静态方法(不推荐),但是只能通过对象.实例方法这种形式访问实例方法。如果这个方法只是为了做一个功能而不需要直接访问对象的数据,那么这个方法就可以定义为静态方法,如果这个方法是对对象的行为,需要访问对象的数据,这个方法必须定义成实例方法,用类名.静态方法的时候,在同一个类中的话,类名可以不写,省略掉。
4.2.3静态方法的常见应用场景:
1.做工具类,工具类中都是一些静态方法,每个方法用来完成一个功能,以便开发人员直接使用,可以提高开发效率,提高程序的复用性。工具类没有创建对象的需求,建议将工具类的构造器进行私有。
4.3静态方法,实例方法访问相关的注意事项
1.静态方法中可以直接访问静态变量,不可以直接访问实例变量。
其实很好理解,实例变量属于对象的,静态方法不知道该变量是哪个类的,实例方法也是属于类的
2.实例方法中可以直接访问静态变量,也可以直接访问实例成员。
静态方法是属于类的,是类的对象共有的,所以可以直接访问静态变量。
3.实例方法中可以出现this关键字,静态方法中不可以出现this关键字
this关键字是用来指代对象的,静态方法都不支持直接访问实例变量了,所以就更支持不了this关键字了。