006 理解面想对象程序设计

Java SE 第八讲

 

1、面向对象程序设计(Object Oriented Programming,OOP;Object Oriented Design, OOD)。什么是面向对象?在面向对象程序设计中有两个重要的概念:类(class)与对象(object)。

 

2、类:类是一种抽象的概念,类中包含了数据(通常使用名词来表示,数据在类中称作属性【Property或Attribute】或者叫成员变量【Member variable】)与对数据的操纵(通常使用动词来表示,这种操纵在类中称作方法【method】)。比如说人就是一种抽象的概念,人具有姓名、年龄、身高等数据,还有吃饭、跑步等操纵数据的动作。

1)类所包含的内容:属性和方法。

2)如果一个java源文件中定义了多个类,那么这些类中最多只能有一个类是public的,换句话说,定义的多个类可以都不是public的。 对于只用一个public类的源文件,main方法一定要放在这个类中;对于没有public类的源文件,main方法可以放在任意一个方法内。

 

3、对象:对象是一种具体的概念,是类的一种具体表示方式。比如说人是一个类,而张三、李四、王五等具体的人就是对象。

4、 类是一种抽象的概念,对象是类的一种具体表示形式,是具体的概念。先有类,然后由类来生成对象(Object)。对象又叫做实例(Instance)。生成一个对象的过程又叫做实例化。

5. 面向对象程序设计的三大基本特征:继承(Inheritence)、封装(Encapsulation)、多态(Polymorphism)

6. 命名约定

a) 类:首字母大写,如果一个类名由多个单词构成,那么每个单词的首字母都大写,中间不使用任何的连接符。比如Person类,MemberTest类。

b) 方法:首字母小写。如果一个方法由多个单词构成,那么第一个单词的所有字母全都小写,从第二个单词开始,每个单词的首字母大写。比如add,addThreeInt。

c) 属性:命名约定与方法相同。比如age,ageOfPerson。

 

 信息的隐蔽

 

 

面向对象的三大特征:封装、继承与多态。

 

只要某个编程语言是属于面向对象编程语言,它就必须具有这三个特征。Java也不例外。

 

下面我们会先来说说面向对象特征中的封装,但是在说它之前,还是先来说说信息的隐藏。这里,隐藏就像是封装的先锋官,没有了隐藏,封装就无从谈起。

 

我们已经知道了,Java中类和对象的概念,来自于我们的真实世界的抽象。那么我们在声明一个类,并根据类来创建对象的时候,就要估计它的真实合理性。

 

比如前面的学生类示例中,声明了age年龄属性。类型为整数类型。年龄是用来描述学生信息的。那么,如果运行其他的用户(比如其他的类或者对象)可以直接操作对象的属性,就会出现一些不必要的问题。

 

例如:将年龄(age)的值设置为1000。

 

虽然这在语法上是没有问题的,但是,我们知道,在现实世界中,这种情况是绝对不可能出现的。如果在程序的其它部分使用到了这个age,就可能会引起问题。

 

因此,一般而言,应该将属性定义为private(私有的)的,这样,只有类本身才可以访问这个属性,而外部程序或其他的类是不能访问它的(private的详细说明后面章节说明)。

 

通过定义不同的方法,并且将这些方法设置为public或Default来访问这些属性,这样,我们可以通过在方法中加入一些逻辑判断的方法来操作属性,例如,将年龄的上限设置为100,将下限设置为10等,这样就不会出现年龄为1000的情况了。一个改进后的Student类的定义如下(省略了其他属性和相应的方法):

 

 

public class Student1 {
	// 定义属性
	private int age;

	// 定义属性“age”的设置方法
	public void setAge(int s_age) {
		if (s_age > 100) {
			age = 100;
		} else if (s_age < 10) {
			age = 10;
		} else {
			age = s_age;
		}
	}

	// 定义属性“age”的获取方法
	public int getAge() {
		return age;
	}
}

 

这里先简单说明一下,在setAge方法中,if逻辑表示分支判断,很容易读出,当用户提供的参数年龄值大于100,则最多年龄可以记为100,如果小于10,则最小年龄可以记为10,如果年龄值在10到100的范围内,可以完成用户的赋值要求。

 

当然,这个逻辑可以根据实际情况来修改,这样一来,用户(其他的对象和类)就无法直接对年龄属性“胡作非为”了,他必须在我们的监督下完成操作。

 

这就是信息的隐藏。即将类中不想让其他用户直接操作的属性(或者方法,一般主要指属性)设置为private修饰,只允许在该类里面进行操作。

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值