Java是一门完全面向对象的编程语言,类和对象是面向对象的基础和核心。
Java中,我们并不是将待解决的问题分解成一个一个的步骤,通过一步步执行这些步骤来解决问题,而是从待解决的问题中分离出一个个的个体,通过逐步调用这些个体的行为来解决问题。前者被称为面向过程编程,而后者,被称为面向对象编程。
类和对象的概念在生活中随处可见。
比如,我们说计算机的出现给人们的生活带来了很大的便捷。在这里,我们并不是说的某台计算机的出现、也不是说计算机的出现给某个人带来了很大的便捷。此处我们所说的计算机和人,都是抽象概念,在程序中,称之为类。
又比如,我们说程序员小邱在用她的计算机写代码。这里,我们知道小邱是一个具体的人、她的计算机也是一台具体的计算机,而小邱与小邱的计算机,就是人这个类与计算机这个类的一个对象。
类的构成
类的构成有两部分:属性和方法。
属性是根据类中对象的特征进行定义的,我们可以通过它来描述类中的对象。比如说小邱的计算机,它有颜色,并且有可能是黑色、红色、银色、灰色等等等等中的任何一种。它也有尺寸、重量、分辨率、品牌、内存、价格这些特征,我们可以在类中定义对应的变量,对对象中的变量赋值,我们就可知知道它的具体特征了。
如:小邱的计算机.颜色=黑色;
方法是根据对象的行为(功能、用途)进行定义的。比如说计算机提供打字、存储、显示、计算、开机、关机、...我们可以定义对应的方法,在类的对象中调用这个方法。
如:小邱的计算机.开机();
类与对象在程序中的表示:
Java中类的基本格式:
public class 类名 {
//定义属性的格式
public 数据类型 属性名;
//定义方法的格式
public 返回值数据类型 方法名(数据类型 参数名,...){
}
}
实例化对象格式:类名 对象名 = new 类名(参数值,...);
调用属性和方法:
对象名.属性名
对象名.方法名(参数值,...);
构造方法:
当然了,除了普通方法,类中还有一种构造方法。构造方法,即实例化对象时立即调用的方法,可带参数,参数是为了给属性赋值。小邱的计算机的构造方法中,颜色属性的值为黑色,于是计算机类给小邱实例化了一个黑色的计算机。构造方法名即类名。于是,平常所说的实例化对象时的 类名 对象名 = new 类名(参数值,...);等价于类名 对象名 = new 构造方法名(参数值,...);
注意:1.构造方法一定不能定义返回值数据类型;
2.构造方法名一定要和类名完全一致,包括大小写;
3.Java会给类提供一个无参数的构造方法,如果你在类中自定义构造方法,这个自定义的构造方法
会把默认的构造方法覆盖,此时就只能使用自定义的构造方法。
方法重载:
方法重载即定义方法名相同,但方法所带的参数个数、参数类型、参数顺序至少有一个不同的方法。
什么情况下需要方法重载呢?比如说,小邱有“喝”这个方法,但参数只能是“水”,即你让小邱喝洒,她就会报错。为了让小邱能够喝酒,我们可以对原有的“喝”这个方法进行重载。这就是普通方法重载。如果小邱对她的电脑有除了颜色以外的其它属性有要求的话,比如说希望电脑有双摄像头(膨胀了),她就要对计算机的构造方法进行重载,使其加上双摄像头这个参数。再比如说,人类有打球这个方法,但不同的球作为不同的参数,需要有不同的打法,于是我们需要对打球这个方法进行一一重载,这就是普通方法的重载;红楼梦中贾宝玉出生的时候带有通灵宝玉、而其他人并没有,这肯定是上帝对他们的构造方法进行了重载。
方法重载通常用来产生一组功能相似的方法,减少了方法名的数量,对程序的可读性有很大的好处。也可以理解为让一个方法能够处理不同的参数。
this关键字
当参数名和属性名完全一致时,Java会采用就近原则,优先使用离其最近的参数,把参数赋给参数;
可见,我们并没有成功将参数赋值给属性,参数还是参数,属性什么值都没有。
正确的写法。
就像小邱在和同学谈论隔壁班学霸小邱,这时小邱说:小邱和小邱是朋友!这时,同学就会很疑惑,并且会自动地把这句话中的两个小邱当作她们正在谈论的小邱,并对说出这句话的小邱投来鄙视的眼神。这时,程序中我们就会用this关键字进行区分,说:本人小邱和小邱是朋友哦。这里的this关键字相当于现实生活中的“我”。
this(参数值,...); 调用带对应参数的构造方法。
this.方法名(参数值,...); 调用普通方法
QQ:375471598
微信:Q159837547
欢迎过来勾搭小邱同学,或者对文章提出修改意见,共同成长。