在学会Java的流程控制语句后,利用Eclipse的便利,你可能已经初步体验到编程的乐趣。但幸福总是那么短暂,很快你就会发现,自己可以利用的工具比较少,除了流程控制语句外,几乎额外的东西了。不,还有一大片天地在等你畅游呢。
本人不是编程专业出身,这里叙述OOP的基本概念,全是按照感觉走了。来吧,跟上我的感觉!
什么是OOP?
OOP,即是面象对象的编程,是与结构化编程相对的编程方式。不了解结构化编程也无碍。简单地看下周遭的世界,你就能找到点OOP的特质。
一辆汽车,有轮子、发动机等基本设备,可以行驶的基本功能。作为使用者,我们无需知道汽车的具体构造细节,只要知道如何操作方向盘,让汽车行驶就可以了。
也即是,要达到目标,我们只要获得某一物体,知道如何使用他就可以,无须关注具体的实现细节。
再比如,要组装一辆汽车,需要很多很多的零件,而这些零件呢,都具有一定的规格,能完成某一具体的功能。比如发动机产生动力,刹车片用来制动等等。各个零件相互组合来完成更大的目标,这些零件就是要研究的具体的单元。
上面的例子中,汽车是我们要达到旅行目的所需要使用的单元,发动机、刹车片等是我们要组装一辆汽车需要的单元。在使用过程中,我们只关注单元的规格、单元的能力,而不关心单元具体的运作细节。这些单元,在编程世界里,就可以抽象为类,即有一定属性、一定行为的类。
类的组成
假如要定义一个人,类的名称叫Human,有姓名(这是属性),会说话(这是行为)。在Java定义如下:
public class Human{ // Human即是类的名字
String name;// 这是定义属性
// 这是定义行为
public void speack(String words){
System.out.println(words);
}
}
这样,一个简单的类就定义好了。这个类还不完善,在后续过程中再完善。
类与对象
类与对象的关系,就像人与乔布斯的关系。类是统称,对象是类的某一个具体个体。一个类可以有很多对象,但是对象之间是如何区别的呢?
这就要谈到属性的重要性了!
属性标识对象的状态,如某个人的年龄、性别等,属性也可以标识对象的唯一性,如人的身份证号。
从类创建对象的过程,称为 实例化。Java编程语言中是这样的:
Human zhangSan = new Human();
这样就创建了 zhangSan这个人了。Human zhangSan 的写法类似 int i 。着重讲解后面 new Human()
类与构造方法
在由类实例化一个具体的对象的时候,构造方法就会执行。比如Human这个类,定义了2个构造方法,一个无参数,一个有参数。看清构造方法的形式---无返回值。
public class Human{
String id; // 这是标识对象唯一性的属性
String name;
// 这是new Human()时调用的构造方法
Human(){
}
// 这是 new Human("111111111")时调用的构造方法
Human(String shenFenZheng){
id= shenFenZheng;
}
}
new Human() 即调用无参数的构造方法创建一个 Human实例对象。
类的方法
方法是一个类行为的支撑,类所有的方法定义了这个类的能力范围,具体的实现过程则写在方法的内容中。方法的定义遵循一定的格式,即:
修饰符 返回值类型 方法名称(参数类型 参数名)
public void speack(String words)
这个例子中:
修饰符:public (这个繁琐以后讲)
返回值:void (空,即不返回值)
方法名称:speak
参数类型:String ( 字符串类型 )
参数名称: words(这是在 方法内部该变量的名称)
类的属性与存取方法
作为OOP原则之一:数据隐藏(或称为封装)。对象的属性不能直接被外部对象访问,而应该通过对象自身提供的get(取)、set(存)方法来完成。
public String getName() {
return name;
}
public void setName(String aName) {
name = aName; // 这里的name是类中的属性,该类的所有方法都可以直接访问、赋值
}
一个较为合理的类
至此,一个类的片段我们都有了,下面拼接起来吧:
public class Human {
String id; // 类的属性变量
String name; // 类的属性变量
// 这是new Human()时调用的构造方法
Human() {
}
// 这是 new Human("111111111")时调用的构造方法
Human(String shenFenZheng) {
id = shenFenZheng;
}
public String getId() {
return id;
}
public void setId(String shenFenZheng) {
id = shenFenZheng;
}
// 取name内容的方法
public String getName() {
return name;
}
// 修改name内容的方法
public void setName(String aName) {
name = aName;
}
// 类的行为
public void speak(String words) {
System.out.println(words);
}
}
使用实例:
public class Meeting {
public static void main(String[] args) {
// 一个小娃出生了
Human zhangSan = new Human();
// 报了户口,身份证号是
zhangSan.setId("1234567890123");
// 家长给起了个名字
zhangSan.setName("张三");
// 又一个小娃出生了
Human xiaoMing = new Human();
xiaoMing.setId("3210987654321");
xiaoMing.setName("小明");
// 两人见面了,张三先打招呼
zhangSan.speak("你好!我是"+zhangSan.getName());
// 出于礼貌,小明回了句
xiaoMing.speak("你好!我是"+xiaoMing.getName()+",很高兴认识你");
}
}
这个例子仅引导你了解OOP的基本概念,代码还不是很规范,在学会各种修饰符public private protected default之后,代码会规范。
后面要学习的有:
1、各种修饰符
2、类间关系(依赖、聚合、继承)
3、特殊注意之处final static this super