我们知道Java是完全面向对象的,所以需要熟悉OOP(面向对象程序设计)才能够编写Java程序。
一、面向对象程序设计
面向对象程序设计就是通过对象来进行程序设计,将客观世界中的一个事物作为一个对象来考虑,对象表示一个可以明确标识的实体。
比如一只小狗,他就是一个对象。每个对象都有自己的属性和行为。小狗的属性根据需要有性别、体重等,他的行为有吃饭、睡觉、玩耍等。
从程序设计的角度来看,事物的属性可以用变量来描述,行为则用方法来反映。
每个对象都有自己独特的标识、状态和行为。
1.面向对象的三大特征:封装、继承、多态
封装
类是封装的基本单元。通过封装可以隐藏类的实现细节,也可以避免对类中属性的直接操作。可以通过类的公共接口访问类中的变量,而不必知道这个接口的具体实现方式。只要这个方法的名字和参数不变,即使类中的变量被重新定义,或方法的代码被修改,对类中的变量的访问也不会受到影响。比如,你在计算机上安装了一个声卡,你不必知道声卡的内部结构,也不必知道功能如何实现的,因为实现声卡功能的继承电路被封装了。你只要知道声卡应该装在电脑主板的什么位置,其他的设备如音箱,光驱怎样和声卡连接就可以了。
继承
继承是对类的功能的重用和扩充。通过对某一个类的继承产生一个新的子类,子类既有从某个类中继承下来的功能,又可以自行定义自己的变量和方法,产生新的功能。
多态
多态性指的是方法的名字相同,但实现不同。即“同一接口,多个方法”。如有三个方法,分别用来计算圆、矩形、三角形面积,他们的名字可以都叫做area。
2.类
类是构造对象的模板或蓝图。我们可以将类想象成制作甜饼的切割机,将对象想象为甜饼。由类构造对象的过程称为创建类的实例。
对象中的数据称为域,操纵数据的过程称为方法。对于每个特定的类实例对象都有一组特定的实例域值。
在Java中,所有类都源自于Object类
3.类之间的关系
依赖 ( “uses-a” )
聚合 ( “has-a” )
继承 ( “is-a” )
这里简单的解释一下:
依赖: 如果一个类的方法操纵另一个类的对象,我们就说一个类依赖于另一个类.是一种最明显,最常见的关系.
我们应该尽可能少的减少类之间的依赖,(类B的改变不会导致A产生任何bug是最好的). 用软件工程的术语来说,就是让类之间的耦合度最小.
二、使用预定义类
1.对象与对象变量
要想使用对象,就必须首先构造对象,并指定其初始状态.然后对对象应用方法.
在Java程序设计语言中,使用构造器(构造器会在之后的文章介绍)构造新实例. 构造器是一种特殊的方法, 用来构造并初始化对象.
我们以Java类库中的Date类为例:
构造器的名字应该与类名相同.因此Date类的构造器名为Date.下面构造一个Date对象:
new Date()
这个表达式构造了一个新对象. 这个对象被初始化为当前的日期和时间.
也可以将这个对象传递给一个方法:
System.out.println(new Date());
想多次使用构造对象,可以将对象存放在一个变量中:
Date birthday = new Date();
如图显示了引用新构造的对象变量birthday:
在对象与对象变量之间存在着一个重要区别. 例句:
Date deadline;
定义了一个对象变量deadline,它可以引用Date类型的对象.
一定要认识到:变量deadline不是一个对象,实际上也没有引用对象.
还要认识到:一个对象变量并没有实际包含一个对象,而仅仅引用一个对象.
代码举例:
deadline = new Date() ; // 用新构造的对象初始化变量 deadline = birthday;
现在这两个变量引用同一个对象. 如图: