面向对象(1):类与对象的概念

类与对象的概念

一 面向对象的基本概念


面向对象程序设计(简称OOP)是当今主流的程序设计范型。对于一些规模较小的问题,使用传统的面向过程的开发方式比较理想。但问题一旦上了规模,采用面向对象的设计风格,更易于程序员对代码的理解与维护。程序员只要知道所需修改的代码属于于哪一类中,就可以很快对其定位,而不必像面向过程那样浏览整个繁琐的过程。


二 类与对象


类(class)是面向对象中的一个核心概念。在Java中,没有类的话那么程序员将无法做任何事情。我们可以把类想象成一种设计图纸,里面描述了一类事物的公共属性与公共行为,通过设计图纸来创建这些事物(对象)。例如,我们要设计一个描述办理学生的类,那么哪些属性是公共的呢?首先,作为一个学生,我们要有标示身份的东西,那就是姓名和学号。每一个学生都要上学,那么在学校的这段时间里面,又存在着一些公共的行为,例如,上课,吃午餐等等。对于同一个类的所有对象实例,由于支持相同的行为而具有家族式的相似性。类与其对象的关系可以用下图展示:



要注意的是:在现实生活中,我们在认知的时候,往往由某一个或多个具体事物,来概括和了解这一类事物。然而在程序设计中,我们是先设计类,再来创建具体的对象。


三 类与类之间的关系


类与类之间存在着以下的几种关系:
(1)继承:这是面向对象中最常见的关系之一,这种关系表示了一种特殊(子类)与一般(父类)的关系。例如:我们有一个汽车类,里面描述了制造一辆汽车所需的基本零配件。我们还有一个跑车类,这个类除了包含了汽车类里面所有的零配件以外,还描述了跑车特有的一些零配件(例如:特殊的发动机与轮胎等)。继承的知识点在之后会详尽介绍。

(2)依赖:当A类的方法操纵着B类的对象时,我们称之为依赖关系。例如:我们有一个餐厅类,里面有一个方法(行为)叫做“制作美食”,还有一个方法叫做“购买原料”。“购买原料”这个方法里面维护了一个“原料类”的对象。因为我们在购买原料的时候,查看各个原料的状态。这时,我们就说“餐厅类”依赖于“原料类”。

(3)聚合:聚合关系意味着一个类的对象中维护着另一个类的对象。


四 设计一个自定义类


Java为开发者提供了许多预定义类,开发者可以根据需要调用Java核心类库中的这些预定义类而不用重复造轮子。在这里,我们先不使用这些预定义类,而从最简单的自定义类开始研究如何设计一个类。

基本步骤:
1. 设计一个类名-----基本格式:访问修饰符 class 类名
2. 设计类的属性-----基本格式:数据类型 变量名
3. 设计类的构造方法----基本格式:访问修饰符 类名 (行参列表)
4. 设计类内的方法----基本格式:范围修饰符 返回值 方法名 (行参列表)

例子1:学生类
//创建一个学生类
class Student{
	//公共属性
	String name;
	String sex;
	int grade;
	int ID;
	//构造方法
	public Student(String name,String sex,int grade,int ID){
		this.ID = ID;
		this.grade = grade;
		this.name = name;
		this.sex = sex;
	}
	//公共行为:上课
	public void attendClass(){
		System.out.println("认真听讲");
	}
}

设计好这个类之后该如何使用呢?

例子2:学生类实例化
public class ClassPractice03 {
    //Java类描述学生
	public static void main(String[] args){
		//将学生类的对象实例化
		Student m = new Student("李雷","male", 2, 3);
		//查看对象的属性
		System.out.println(m.grade);
		System.out.println(m.ID);
		System.out.println(m.name);
		System.out.println(m.sex);
	}
}


注意:1.上面两个例子一共有两个类:Student类与带有Public访问修饰符的ClassPractice03类,前者访问修饰符为默认的default(访问修饰符会在后面的文章中介绍),后者作为测试类,有一个main方法(在Java中,main方法为程序的入口)。
2. ClassPractice03的源文件名为ClassPractice03.java,这是因为文件名必须与public类的名字相匹配。在一个源文件中,只能有一个公有类,但可以有任意数目的非公有类。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章