`
xiaolongfeixiang
  • 浏览: 234622 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

Java编程学习之面向对象编程(OOP)基本概念

 
阅读更多

在学会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

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics