JAVA面向对象01对象和类.docx

上传人:b****2 文档编号:1797501 上传时间:2023-05-01 格式:DOCX 页数:10 大小:93.61KB
下载 相关 举报
JAVA面向对象01对象和类.docx_第1页
第1页 / 共10页
JAVA面向对象01对象和类.docx_第2页
第2页 / 共10页
JAVA面向对象01对象和类.docx_第3页
第3页 / 共10页
JAVA面向对象01对象和类.docx_第4页
第4页 / 共10页
JAVA面向对象01对象和类.docx_第5页
第5页 / 共10页
JAVA面向对象01对象和类.docx_第6页
第6页 / 共10页
JAVA面向对象01对象和类.docx_第7页
第7页 / 共10页
JAVA面向对象01对象和类.docx_第8页
第8页 / 共10页
JAVA面向对象01对象和类.docx_第9页
第9页 / 共10页
JAVA面向对象01对象和类.docx_第10页
第10页 / 共10页
亲,该文档总共10页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

JAVA面向对象01对象和类.docx

《JAVA面向对象01对象和类.docx》由会员分享,可在线阅读,更多相关《JAVA面向对象01对象和类.docx(10页珍藏版)》请在冰点文库上搜索。

JAVA面向对象01对象和类.docx

JAVA面向对象01对象和类

1.对象和类(上)

1.1.面向对象程序设计

1.1.1.面向过程的结构化程序设计

首先来看一个需求,实现员工信息管理,将员工简历信息中的数据:

姓名、性别、年龄、薪水,存储在信息管理系统中进行操作。

可以定义一个输出雇员信息的方法进行数据的输出,传递4个参数,代码如下:

1./**打印员工信息的方法*/

2.publicstaticvoidprintEmpInfo(Stringname,intage,

3.chargender,doublesalary){

4.System.out.println("--------------------");

5.System.out.println("姓名:

"+name);

6.System.out.println("年龄:

"+age);

7.System.out.println("性别:

"+gender);

8.System.out.println("薪水:

"+salary);

9.}

在main()方法中声明雇员信息数据(分别为4个变量),然后调用如上的输出雇员方法进行数据的输出,当提升工资后,再调用输出方法输出,代码如下:

1./**打印雇员信息*/

2.publicstaticvoidmain(String[]args){

3.//雇员1

4.Stringemp1Name="黄河大虾";

5.intemp1Age=25;

6.charemp1Gender='男';

7.doubleemp1Salary=8000.00;

8.

9.    //打印员工信息

10.printEmpInfo(emp1Name,emp1Age,emp1Gender,emp1Salary);

11.

12.//修改员工工资(增长20%)并打印

13.emp1Salary*=120.0/100.0;

14.printEmpInfo(emp1Name,emp1Age,emp1Gender,emp1Salary);

15.}

如上代码的实现方式即为面向过程的结构化程序设计,何为面向过程?

面向过程是一种以过程为核心的编程思想,即分析出解决问题所需要的步骤,然后使用方法将这些步骤一步一步的实现,使用的时候,在main方法中一个一个依次调用就可以了。

分析如上代码,看看结构化程序的弊端所在,首先,如上代码缺乏对数据的封装,变量emp1Name,emp1Age,emp1Gender,emp1Salary为4个完全独立的变量,并不是一个整体。

其次,数据和方法(对数据的操作)的分离,在打印雇员信息方法中,传递了4个参数,而这4个参数与在main方法中所定义的4个变量并无直接关系。

这就是面向过程程序设计的弊端,那如何解决?

使用面向对象的程序设计。

1.1.2.什么是抽象数据类型

面向对象的第一步就是抽象数据类型,所谓抽象数据类型可以理解为:

将不同类型的数

据的集合组成个整体用来描述一种新的事物。

像如上程序中,可以将姓名、年龄、性别、工资这4个不同类型的数据组成一个整体来描述雇员这个新事物。

1.1.3.什么是类

类定义了一种抽象数据类型,而类不但定义了抽象数据类型的组成(成员变量),同时还定义了对该类型可以实施的操作(方法)。

看如下代码定义了雇员类:

1./**定义雇员类*/

2.publicclassEmp{

3.Stringname;

4.intage;

5.chargender;

6.doublesalary;

7.}

在如上的实例代码中,仅仅定义了Emp类型的组成,即成员变量。

该类定义了4个成员变量:

String类型的name用于存放名字;int类型的age用于存放年龄;char类型的gender用于存放性别;double类型的salary用于存放工资。

这个时候printEmpInfo()方法的参数也可以进行修改了,可以将其改为Emp类型(Emp是一种抽象数据类型),这样可以看出是将一个雇员信息当作了一个整体来操作,看如下代码:

1.publicstaticvoidprintEmpInfo(Empemp){

2.    System.out.println("--------------------");

3.    System.out.println("姓名:

"+emp.name);

4.    System.out.println("年龄:

"+emp.age);

5.    System.out.println("性别:

"+emp.gender);

6.    System.out.println("薪水:

"+emp.salary);

7.}

当调用如上方法时,需要传递一个Emp类型的数据,称之为Emp类型的对象。

每个Emp类型的对象都包含name、age、gender和salary四个成员,通过“.”的方式进行访问。

下面看一下在main()方法中的调用代码:

1.publicstaticvoidmain(String[]args){

2.Empemp1=newEmp();//使用new关键字创建Emp类型的对象

3.    emp1.name="黄河大虾";

4.    emp1.age=25;

5.    emp1.gender='男';

6.    emp1.salary=8000;//为该对象的各个成员变量赋值

7.

8.    printEmpInfo(emp1);

9.    emp1.salary*=120.0/100.0;

10.    printEmpInfo(emp1);//使用该对象调用printEmpInfo方法

11.}

分析如上几段代码可以看出,定义了Emp类以后,提升了代码的模块化以及代码的重用性,但程序依然存在问题,即:

打印信息的方法是只针对Emp数据的操作,属于Emp自身的方法,需要实现数据和方法(对该类数据的操作)的统一,也就是说,可以将打印信息的方法也放在Emp中定义,修改后的完整代码如下所示:

1./**进一步修改后的雇员类*/

2.publicclassEmp{

3.Stringname;

4.intage;

5.chargender;

6.doublesalary;

7.

8./**打印信息的方法*/

9.publicvoidprintInfo(){//定义在类中,可直接对成员变量进行操作

10.System.out.println("--------------------");

11.System.out.println("姓名:

"+name);

12.System.out.println("年龄:

"+age);

13.System.out.println("性别:

"+gender);

14.System.out.println("薪水:

"+salary);

15.}

16.}

17./**针对修改后的Emp类的使用方式*/

18.publicclassEmpManager{

19.publicstaticvoidmain(String[]args){

20.Empemp2=newEmp();

21.        emp2.name="白发馍女";

22.        emp2.age=24;

23.        emp2.gender='女';

24.        emp2.salary=6000;

25.        /**调用方法打印信息*///创建完Emp对象后,对其成员变量赋值,然后调

26.        emp2.printInfo();//用其printInfo()方法打印各个成员变量信息

27.        emp2.salary*=125.0/100.0;

28.        emp2.printInfo();    

29.}

30.}

通过上面的代码,很好的实现了对数据的封装,并且实现了数据与方法的统一。

这种方式即为面向对象方式,即:

以对象为中心来构建软件系统。

1.2.定义一个类

1.2.1.定义类的成员变量

类是一种引用数据类型。

类为对象的模板,简单的说就是分类。

类的定义包括“成员变量”的定义和“方法”的定义,其中“成员变量”用于描述一类对象共同的数据结构。

在Java语言中,类的成员变量的定义可以使用如下语法:

1.class类名{

2.成员变量类型变量名称;

3.………

4.}

定义好类之后,可以创建该类的对象,对象创建之后,其成员变量可以按照默认的方式初始化;对象成员变量的默认初始化值规则如下图-5所示:

图-5

1.2.2.定义类的方法

类中除了定义成员变量,还可以定义方法,用于描述对象的形为,封装对象的功能。

在Java语言中,可以按照如下方式定义类中的方法:

1.class类名{

2.返回值类型方法名称(参数列表){

3.方法体………

4.    }

5.    ………

6.}

下面,通过案例对成员方法进行演示,需求:

为方块类定义drop()方法如下所示:

1.classCell{

2.    introw;intcol;

3.    /**方块下落的方法*/

4.    publicvoiddrop(){

5.        row++;    //行++,即下落

6.    }

7.}

调用方法,也和访问成员变量一样,通过“.”符号,代码如下:

1./**创建方块类对象,调用下落方法,并打印效果*/

2.classTestCell{

3.publicstaticvoidmain(Stringargs[]){

4.System.out.println("-------绘制Cell-----");

5.    Cellcell=newCell();

6.    cell.row=15;

7.    cell.col=6;

8.    printCell(cell);

9. 

10.    System.out.println("----Cell下落一行----");

11.    //调用drop方法,下落一行

12.    cell.drop();

13.    printCell(cell);

14.}

15.}

1.3.创建并使用对象

1.3.1.使用new关键字创建对象

类定义完成后,可以使用new关键字来创建对象。

new运算的语法为:

new类名();此创建对象的过程也通常称为实例化。

javax.swing.JFrame是JDK提供的一个类,用于封装显示在桌面上的一个窗体。

使用newJFrame()可以创建一个窗体对象,如下图–1所示:

图-1

1.3.2.引用类型变量

为了能够对实例化的对象进行访问控制,需一个特殊的变量,即引用。

对引用有两点需要说明:

1.引用类型变量可以存储该类对象的地址信息,通常称为“指向该类的对象”,当一个引用类型变量指向该类的对象,就可以通过这个变量对对象实施访问。

2.除8种基本类型之外,用类、接口、数组等声明的变量都称为引用类型变量,简称“引用”。

可以看图–3,描述了类、对象、引用之间的关系:

图-3

当创建了引用类型变量之后,就可以通过引用来访问对象的成员变量或调用方法,如下代码所示:

1.Empemp=newEmp();

2.emp.name=“黄河大侠”;//访问对象的成员变量

3.

4.JFrameframe=newJFrame();

5.frame.setSize(200,300);//调用方法

6.

1.3.3.访问对象的成员变量、调用方法

当创建了引用后,即可以通过引用来访问对象的成员变量,以及调用方法。

看如下的示例:

1.Cellc=newCell();

2.c.row=2;

3.c.col=3;//访问成员变量

4.c.drop();

5.c.moveLeft

(2);

6.Stringstr=c.getCellInfo();//调用方法

1.3.4.引用类型变量的赋值

引用类型变量存储的是对象的地址信息,对引用类型变量的赋值,除了使用上面的new关键字以外,还可以有另外一种赋值方式,即:

相同类型的引用类型变量之间相互赋值。

需要注意的是:

引用类型变量之间的赋值不会创建新的对象,但有可能会使两个以上的引用指向同一个对象。

请看如下代码:

1.Empe1=newEmp();

2.Empe2=e1;//将e1的值(对象的地址信息)赋给e2,e2和e1指向相同的对象。

3.e1.name=“黄河大虾”;

4.e2.name=“白发馍女”;

5.System.out.println(e1.name);

如上代码的输出结果为:

白发馍女。

因为e1与e2存储的地址相同,也就意味着e1与e2指向了同一个对象,那么对该对象的修改,将会影响所有对该对象的引用。

1.3.5.null和NullPointerException

对于引用类型变量,除了上面的两种赋值方式之外,还可以对其赋值为null。

null的含义为“空”,表示还没有指向任何对象。

例如:

1.Empemp=null;//引用emp中的值为null,没有指向任何对象;

2.emp=newEmp();//引用emp指向了一个Emp对象;

需要注意:

当一个引用的值为null的时候,如果通过引用访问对象成员变量或者调用方法是不合逻辑的(因其没有指向某对象,自然不会有属性和方法)。

此时,会产生NullPointerException(空指针异常)。

异常的详细概念后面详细讲。

请看下面的代码,将就产生NullPointerException:

1.JFrameframe=null;

2.frame.setSize(200,300);

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2