你的位置:首页 > Java教程

[Java教程][Java入门笔记] 面向对象编程基础(一):类和对象


什么是面向对象编程?

  我们先来看看几个概念:

面向过程程序设计

面向过程,是根据事情发展的步骤,按进行的顺序过程划分,面向过程其实是最为实际的一种思考方式,可以说面向过程是一种基础的方法,它考虑的是实际地实现,一般的面向过程是从上往下步步求精。

例如:如果你要吃饭,那需要:“买菜-洗菜-做饭-吃饭”等等,一步一步的来设计,就是面向过程

结构化程序设计

结构化程序设计是主张通过按功能来分析系统需求的一种设计思想。其主要原则可以概括为:

自顶向下:程序设计时,应先考虑总体,后考虑细节;先考虑全局目标,后考虑局部目标。不要一开始就过多追求众多的细节,先从最上层总目标开始设计,逐步使问题具体化。

逐步细化:对复杂问题,应设计一些子目标作为过渡,逐步细化。

模块化设计:一个复杂问题,肯定是由若干稍简单的问题构成。模块化是把程序要解决的总目标分解为子目标,再进一步分解为具体的小目标,把每一个小目标称为一个模块。

结构化程序设计首先采用结构化的程序分析方法进行功能需求分析,然后使用结构化设计方法对系统进行设计,最后采用结构化编程方式进行系统实现。
这种采用结构化程序设计主张按功能把软件逐步细化,因此这种方法也被称为面向功能的程序设计方法

结构化程序设计里最小的程序单元是函数,每个函数都负责完成一个功能,作为程序入口的函数被称作主函数,由主函数调用其他函数,其他函数再调用其他一些函数,从而完成整个程序的功能。

有“人”这样一个类,他有什么特征(年龄、体重等),有什么功能(吃饭、行走等),如果我们要完成上面面向过程中的功能,我们只需调用某个“人”对象的“食”方法即可。

程序的三种基本结构

无论是上面的哪种设计思想设计和实现程序,程序的设计都有可能会涉及都下面三种程序的结构:

顺序结构

顺序结构表示程序中的各操作是按照它们出现的先后顺序执行的。

选择结构

选择结构表示程序的处理步骤出现了分支,它需要根据某一特定的条件选择其中的一个分支执行。选择结构有单选择、双选择和多选择三种形式。

循环结构

循环结构表示程序反复执行某个或某些操作,直到某条件为假(或为真)时才可终止循环。在循环结构中最主要的是:什么情况下执行循环?哪些操作需要循环执行?循环结构的基本形式有两种:当型循环和直到型循环。

当型循环:表示先判断条件,当满足给定的条件时执行循环体,并且在循环终端处流程自动返回到循环入口;如果条件不满足,则退出循环体直接到达流程出口处。因为是"当条件满足时执行循环",即先判断后执行,所以称为当型循环。

直到型循环:表示从结构入口处直接执行循环体,在循环终端处判断条件,如果条件不满足,返回入口处继续执行循环体,直到条件为真时再退出循环到达流程出口处,是先执行后判断。因为是"直到条件为真时为止",所以称为直到型循环。

类和对象

面向对象的程序设计过程中有两个重要的概念:类(class)和对象(Object)。

什么是类?

类是对现实生活中一类具有共同特征的事物的抽象,它是一个抽象的概念。

比如小轿车、摩托、卡车、公交车,他们都有共同的特征,能够机动化的行走以及运载人或物品。所以我们可以把他们抽象为一个类:车。

什么是对象?

 对象是类这个抽象概念的一个具体体现,比如有一个类叫“人”,而这个叫张三的人、那一个叫李四的人,都是“人”这个类的具体的体现,所以他们是对象。需要注意的是:对象一定具体到某个个体,张三不一定是一个对象,因为可以有很多个叫张三的,一定是“这一个张三”才是一个对象。

如何定义类

定义语法:

[修饰符] class 类名{  //类的内容}

 

 如:

public class Person{  }

 

 我们定义了叫“Person”的一个类。

因为Java语言是区分大小写的,所以需要注意关键字的大小写的问题,类名可以自己任意定义,建议起名要具有实际意义以及每个单词首字母大写。

对于一个类而言,它包含三种最常见的成员:构造器、Field和方法。三个成员都可以定义0个或多个。

构造器

构造器是一个类创建对象的根本途径,如果一个类没有构造器,通常无法创建对象,所以系统会为每一个类默认定义一个构造器,在不明确定义的情况下,它是隐藏的,如果明确定义了,则不会默认定义。

 定义构造器的语法:

[修饰符] 类名([形参 参数名]){
  功能代码
}

 

 修饰符可以是public private protected 或者不写。

例:

public class Person{  public Person(){}}

 

 Field(属性)

Field用于定义该类或该类实例所包含的状态数据、描述对象的特征等,定义语法如下:

[修饰符] 数据类型 属性名 = 值;

 

 例:

public class Person{  public String name;  public int age;}

 

 

 Person(人)这个类有两个Filed,分别用来描述姓名、年龄。上面这个例子中没有为其定义一个构造器,所以系统会为其默认一个构造器:public Person(){}

方法

方法用来定义该类或该类实例的行为特征或功能实现。

语法如下:

[修饰符] 返回值 方法名([形参 参数名]){  //功能代码}

 

例:

public class Person{ //定义一个Person类  public String name; //具有Field 姓名(name)、年龄(age)  public int age;  public Person(){} //第一个构造方法  public Person(String n, int a){ //第二个构造方法,有两个参数n和a,在创建对象是如果调用了该构造方法就会将name属性设置为传进来的n,age为a。    name = n;    age = a;  }  public void eat(String s){ //方法,模拟吃东西的功能    System.out.println(name + "在吃" + s);  }  public void sleep(int hour){ //方法,模拟睡觉功能    System.out.println(name + "睡了" + hour + "个小时");  }}

 

 

对象的创建和使用

前面已经说明过,创建对象的根本途径是构造器,通过new关键字调用该类的构造器来创建一个对象,如:

上面我们已经定义了一个“人”类,我们通过它创建一个对象。

Person p; //定义一个Person类型的变量p = new Person(); //通过new关键字Person类的第一个构造器,返回一个Person实例,也就是该对象。

 

也可以这样:

Person p = new Person("张三", 20); //我们将上面的两步简化为一步,并且调用第二个构造方法,传递两个参数,为这个对象设置了姓名和年龄。

 

 

有了对象,我们就可以使用它了:

使用对象:使用“.”进行以下操作
  给类的属性赋值:对象名.属性
  调用类的方法:对象名.方法名()
System.out.println(p.name); //将这个对象的名称打印出来p.sleep(5); //调用睡觉的方法

 

创建和使用对象在内存中的示例

上面我们有这样一行代码:Person p = new Person("张三", 20);

这行代码创建了一个Person对象,这个对象被赋值给p变量。

这行代码中实际产生了四个东西,p变量和Person对象、"张三"对象、数字20

当有等号时会先执行等号右边的代码new Person("张三", 20),这句代码中调用的是public Person(String n, int a)构造方法,而我们发现,在这个方法中也有两个变量String类型的n和int类型的a,所以执行这句话时内存中是这样的:

产生两个变量s和a,s是一个引用类型的变量,它在栈内存中存储的是一个堆内存中的内存地址,该地址指向堆内存中String类型的一个对象,啊变量是一个int类型数据,所以它的数值直接存储在栈内存中。

调用构造方法首先会创建一个Person类型的对象,对象中有name和age两个属性:

构造方法中有两句代码

name = n; age = a;

此时会将两个值赋给给对象

name = n:指向同一个对象

age = a:将值复制给age

几月份去普吉岛旅游最好什么时候去普吉岛旅游最便宜深圳到巴厘岛旅游深圳去巴厘岛旅游报价办理巴厘岛旅游签证珠海珍珠乐园在哪?怎么去? 广州白云山有什么美食? 珠海御温泉和珠海海泉湾温泉哪个比较好? 河源九龙湾漂流怎么走呢? 什么时候是圣诞节? 观看“幻彩咏香江”的最佳地点是哪里? 1元人民币兑港币是多少?人民币兑港币汇率是多少? 港币怎么兑换人民币? 香港石澳好玩吗?怎么去香港石澳? 香港金紫荆广场上的升旗仪式是几点钟开始? 香港的出租车贵不贵?怎么收费的? 香港太子珠宝钟表具体地址在哪里? 8月去深圳大梅沙好不好?深圳大梅沙好玩吗? 深圳高铁在哪里?怎么去? 暑假去深圳南澳怎么样?深圳南澳好玩吗? 深圳大鹏所城属于哪个区?怎么去? MAX520BCAP+ Datasheet MAX520BCAP+ Datasheet DS1230AB-120IND+ Datasheet DS1230AB-120IND+ Datasheet MAX520BCAP+T Datasheet MAX520BCAP+T Datasheet 哈尔滨吃喝玩乐 哈尔滨吃喝玩乐 哈尔滨吃喝玩乐 索契地图 索契地图 索契地图 厦门岛内住宿 厦门岛内住宿 厦门岛内住宿