JAVA第六章总结

在Java语言中,经常被提到的两个词是类与对象。实际上,可以将类看作是对象的载体,它定义了对象所具有的功能,学习Java语言必须掌握类与对象,这样可以从深层次去理解Java这种面向对象语言的开发理念,从而更好、更快地掌握Java编程思想与编程方式。本章将详细讲解类的各种方法以及对象,为了使初学者更容易入门,在讲解过程中列举了大量实例。本章的知识架构及重难点如下。

aca040cd24634631ada7233d5f31e8b5.png

 

一、面向对象概述
(1)对象
对象的含义是指具体的某一个事物,即在现实生活中能够看得见摸得着的事物。在面向对象程序设计中,对象所指的是计算机系统中的某一个成分。在面向对象程序设计中,对象包含两个含义,其中一个是数据,另外一个是动作。对象则是数据和动作的结合体。对象不仅能够进行操作,同时还能够及时记录下操作结果。

(2)类
类是具有相同特性(数据元素)和行为(功能)的对象的抽象。因此,对象的抽象是类,类的具体化就是对象,也可以说类的实例是对象,类实际上就是一种数据类型。类具有属性,它是对象的状态的抽象,用数据结构来描述类的属性。类具有操作,它是对象的行为的抽象,用操作名和实现该操作的方法来描述。 类映射的每一个对象都具有这些数据和操作方法,类的继承具有层次性和结构性,高层次对象封装复杂行为,具体细节对该层次知识保持透明,可以减小问题求解的复杂度。

(3)封装
封装是将数据和代码捆绑到一起,对象的某些数据和代码可以是私有的,不能被外界访问,以此实现对数据和代码不同级别的访问权限。防止了程序相互依赖性而带来的变动影响,面向对象的封装比传统语言的封装更为清晰、更为有力。有效实现了两个目标:对数据和行为的包装和信息隐藏。

(4)继承
继承简单地说就是一种层次模型,这种层次模型能够被重用。层次结构的上层具有通用性,但是下层结构则具有特殊性。在继承的过程中类则可以从最顶层的部分继承一些方法和变量。类除了可以继承以外同时还能够进行修改或者添加。通过这样的方式能够有效提高工作效率。在这里举一个例子,当类X继承了类Y后,此时的类X则是一个派生类,而类Y属于一个基类。继承是从一般演绎到特殊的过程,可以减少知识表示的冗余内容,知识库的维护和修正都非常方便。更有利于衍生复杂的系统。

a1e230bfede54715ad8658b0da203d21.png

 

 

(5)多态
多态是指不同事物具有不同表现形式的能力。多态机制使具有不同内部结构的对象可以共享相同的外部接口,通过这种方式减少代码的复杂度。一个接口,多种方式。

动态绑定指的是将一个过程调用与相应代码链接起来的行为。动态绑定是指与给定的过程调用相关联的代码只有在运行期才可知的一种绑定,它是多态实现的具体形式。

消息传递:
对象之间需要相互沟通,沟通的途径就是对象之间收发信息。消息内容包括接收消息的对象的标识,需要调用的函数的标识,以及必要的信息。消息传递的概念使得对现实世界的描述更容易。

面向对象的方法就是利用抽象、封装等机制,借助于对象、类、继承、消息传递等概念进行软件系统构造的软件开发方法。

二、类
类(Class)是面向对象程序设计(OOP,Object-Oriented Programming)实现信息封装的基础。类是一种用户定义的引用数据类型,也称类类型。每个类包含数据说明和一组操作数据或传递消息的函数。类的实例称为对象。

(1)成员变量
在 Java 中,对象的属性也称为成员变量,成员变量可以是任意类型,整个类中均是成员变量作用范围。

为书添加书名属性

创建一个 Book 类,在类中设置一个 name 属性,并为该属性编写 Getter/Setter 方法。

018c689184e646d7ab79f18cd7f1c158.png

(2)成员方法
一个成员方法可以有参数,这个参数可以是对象,也可以是基本数据类型的变量,同时成员方法有返回值和不返回任何值的选择,如果方法需要返回值,可以在方法体中使用return 关键字,使用这各关键字后,方法的执行将被终止。

(3)权限修饰符

3b2a13e39fe54b99a044519ced45be75.png

 

 (4)局部变量
如果在成员方法中定义一个变量,那么这个变量被称为局部变量。

局部变量是在方法被执行时创建,在方法执行结束时被销毁。局部变量在使用时必须进行赋值操作或初始化,否则会出现编译错误。

作或被初始化,否则会出现编译错误。

交换两个整数的值

在ChangeDemo类中创建静态的exchange)方法,该方法可以将数组参数arr的前两个元素值互换,通过在方法中定义一个保存临时数据的局部变量tmp,利用t mp交换两个元素的值。

22ba4167e0934f45bf72669d33216d61.png

 

(5)局部变量的有效范围
可以将局部变量的有效范围称为变量的作用域,局部变量的有效范围从该变量的声明开始到该变量的结束为止。

在相互不嵌套的作用域中可以同时声明两个名称的类型相同的局部变量。

如果将局部变量id在方法体的for循环中再次定义,编译器会报错。

(6)this关键字
this关键字用于表示本类当前的对象,当前对象不是某个new出来的实体对象,而是当前正在编辑的类,this关键字只能在本类中使用。

在java语言中,规定使用this关键字来代表本类对象的引用,thus关键字被隐式的用于引用对象的成员变量和方法。

java语言中最常规的调用方式是使用“对象.成员变量”或“对象.成员方法”进行调用。

this引用的就是本类的一个对象,在局部变量或方法参数覆盖了成员变量时,就要添加this关键字明确引用的是类成员还是局部变量或方法参数。

this除了可以调用成员变量或成员方法 还可以作为方法的返回值。

三、类的构造方法
在类中,除成员方法外,还存在一种特殊类型的方法,那就是构造方法。构造方法是一个与类同名的方法,对象的创建就是通过构造方法完成的。每海当类实例化一个对象时,类都会自动调用构造方法。

构造方法的特点如下:

1.构造方法没有返回值。

2.构造方法的名称要与本类的名称相同。

“构造”鸡蛋灌饼

当顾客购买鸡蛋灌饼时,如果要求加两个蛋,店家文就给饼加两个蛋;不要求时,店家会默认给饼加一个蛋。创建鸡蛋灌饼类(EggCake 类),使用this关键字,在无参构造方法中调用有参构造方法,实现上述加蛋过程。

1797bb751860449c930a803440df97d8.png

 

四、静态变量和静态方法
有时,在处理问题时会需要两个类在同一个内存区域共享一个数据。例如,在球类中使用圆周率 PI这个值,可能除了本类需要这个值,在另外一个圆类中也需要使用。这时没有必要在两个类中同时创建PI,因为这样系统会将这两个不在同一个类中定义的静态值分配到不同的内存空间中。为了解决这个问题,可以将PI设置为静态的。

被声明为static 的变量和方法被称为静态成员。静态成员属于类所有,区别于个别对象,可以在本类或其他类使用类名和“.”运算符调用静态成员。

创建并调用静态属性和静态变量

创建 StaticDemo 类,在类中使用static 关键字定义又一个属性和一个方法,并在主方法中调用。

b29a6f83739241e3be18d0dc721470d1.png

 

静态变量与静态方法的作用通常是为了提供共享数据或方法,如数学计算公式等。尽管使用这种方式调用静态成员比较方便,但静态成员同样遵循着public、private和protected修饰符的约束。

统计顾客总人数

在Cust类中创建一个静态整数类型属性count,在构造方法中让count自增。

c953bb6c9cdc4d1bb420eb73154ef55e.png

 

如果在执行类时,希望先执行类的初始化动作,可以使用static 定义一个静态区域,这块区域被称为静态代码块。当类文件被执行时,会首先执行 static块中的程序,并且只会执行一次。

最后总结以下使用static关键字要注意的几点:

在静态方法中不可以使用this 关键字。

在静态方法中不可以直接调用非静态方法。

局部变量不可以使用static 关键字声明。

主方法必须用 static 声明。

只有内部类可以使用static 关键字声明。

五、类的主方法
主方法是类的入口点,它定义了程序从何处开始。主方法提供对程序流向的控制,java编译器通过主方法来执行程序。

在主方法的定义中可以看到其具有以下特性:

主方法是静态的,所以如要直接在主方法中调用其他方法,则该方法必须也是静态的。主方法没有返回值。

主方法的形参为数组。

其中,args[0]~args[n]分别代代表程序的第一个参数到第n个参数,可以使用args.length获取参数的个数。

读取主方法的参数值

在项目中创建 TestMain类,在主方法中编写以下代码, 并在 Eclipse 中设置程序参数。

4842734ef49940c4840cae74ea8d04a5.png

 

六、对象
Java 是面向对象的编程语言,独立的个体就是对象(Object),对象就是面向对象程序设计的核心。对象之间相互协作,共同实现程序的功能。

程序世界中的对象也类似,具有以下特点:

1.属性:个体的状态信息(对象中的数据)
2.行为:个体能够做什么(操作,对象的功能)
对象的状态: 指的是对象中属性/元素的取值对象的状态(属性)可以改变。

(1)对象的创建
对象可以认为是在一类事物中抽象出某一个特例,可以通过这个特例来处理这类事物出现的问题。在Java 语言中,通过new操作符来创建对象。

 

每实例化一个对象就会自动调用一次构造方法,实质上这个过程就是创建对象的过程。准确地说,可以在java语言中使用new操作符调用构造方法创建对象。9b7bce2f9f3c478b87d12d0bb2a11e5a.png

test对象被创建出来时,就是一个对象的引用,这个引用在内存中为对象分配了存储空间。6.3 节中介绍过,可以在构造方法中初始化成员变量,当创建对象时,自动调用构造方法。也就是说,在 Java语言中,初始化与创建是被捆绑在一起的。

每个对象都是相互独立的,在内存中占据独立的内存地址,并且每个对象都具有自己的生命周期,当一个对象的生命周期结束时,对象就变成垃圾,由Java应虚拟机自带的垃圾回收机制处理,不能再被使用。

创建人类并创建其对象

创建人类(People类),类中有名字、年龄和性别3个属性,并为 People类创建有参和无参两种构造方法。以人类为模板,创建两个对象,分别为23 岁名叫tom 的小伙子、19岁名叫 lily 的小姑娘。

c6e383c2b65c43b7a15b427691ab30bc.png

 

(2)访问对象的属性和行为
用户使用new操作符创建一个对象后,可以使用“太时象.类成员”来获取对象的属性和行为。前文已经提到过,对象的属性和行为在类中是通过类的成员变量和成员方法的形式来表示的,所以当对象获取类成员时,也相应地获取了对象的属性和行为。

描述狗的特征

在Dog类中创建名字。颜色和声音3个属性,再创公建一个“叫”的方法。以 Dog 类为模板创建两只狗,一只是白色且会汪汪汪叫的毛毛,一只是灰色且公嗷呜叫的灰灰。

9cb85a5efcec4962b5c9866e17677977.png

 

(3)对象的引用
对象引用是编程中将函数实例化的一种方式。

例如:一个People类的引用可以使用以下代码:

People tom;

通常一个引用不一定需要有一个对象相关联。引用与对象相关联的语法如下:

People tom =new People();

(4)对象的销毁
每个对象都有生命周期,当对象的生命周期结束时,分配给该对象的内存地址需要被回收。在其他语言中,需要用户手动回收废弃的对象。Jav a拥有一套完整的垃圾回收机制,用户不必担心废弃的对象占用内存,垃圾回收器会自动回收无用却 占用内存的资源。 

在学习垃圾回收机制之前,读者首先需要 了解何种对象会被 Java 虚拟机视为“垃圾”。主要包括 以下两种情况:

①对象引用超过其作用范围,这个对象将被视为垃圾。

②将对象赋值为null
 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值