概述
第六章 类与对象
面向对象的编程思想是致力于使计算机语言中对事物的描述与现实生活中该事务的本来面目尽可能一致。所以在面向对象的程序设计中,类和对象是面向对象程序设计方法的最核心概念。
6.1 类的基本概念
类的概念是为了让程序设计语言能更清楚地描述日常生活中的事务。类是对一类事物的描述,是抽象的、概念上的定义;而对象则是实际存在的属该事物的具体的个体,因而也称为实例。
类是由数据成员和函数成员封装而成的。
Java语言内,将函数称为方法。Java语言把数据成员称为域变量、属性、成员变量等;而把函数成员称为成员方法,简称方法。
6.2定义类
类是由数据 和方法封装在一起的数据结构。其中数据表示类的属性,方法表示类的行为。用户定义一个类实际上就是定义了一个新的数据类型。
1.类的一般结构
定义类又称为声明类,一般的语法结构如下:
[类修饰符] class 类名称:
{
[修饰符] 数据类型 成员变量名称;
.
.
.
[修饰符] 返回值的书类型 方法名(参数1,参数2,...)
{
语句序列;
return [表达式];
}
.
.
.
}
注:方括号之内的内容是可选项。类修饰符被分为为公共访问控制符、抽象类说明符、最终类说明符和缺省访问控制符四种。
public 将一个公共类声明为公共类,它可以被任何对象访问;
abstract 将一个类声明为抽象类,没有实现方法,需要子类提供方法的实现,所以不能创建该类的实例
final 将一个类声明为最终类即非继承类,表示它不能被其他类所继承
缺省 缺省修饰符时,则表示只有在相同包中的对象才能使用这样的类
2.成员变量
一个类的成员变量描述了其内该类的内部信息,一个成员变量可以是简单变量,也可以是对象、数组等其他结构类型的数据。成员变量格式如下:
[修饰符] 变量类型 变量名[=初值];
成员变量的修饰符有访问控制符、静态修饰符、最终修饰符、过渡修饰符和易失修饰符等。
public 公共访问控制符。指定该变量为公共的,它可以被任何对象的方法访问。
private 私有访问控制符,。指定该变量只允许自己类的方法访问,其他任何类(包括子类)中的方法均不能访问此变量。
protected 保护访问控制符。指定该变量只可以被他自己的的类及其子类或统一包中的其他类访问,在子类中可以覆盖此变量。
缺省 缺省访问控制符时,则表示在同一个包中的其他类可以访问此成员变量,而其他包中的类不能访问该成员变量
final 最终修饰符,指定此变量的值不能变
static 静态修饰符,指定该变量被所有对象共享,即所有的实例都可使用该变量
transient 过渡修饰符,指定该变量是一个系统保留,暂无特别作用 的临时性变量
volatile 易失修饰符。指定该变量可以同时被几个线程控制和修改
有些成员变量可以被多个修饰符同时修饰,只是有些修饰符不能同时使用。
3.成员方法
类的方法是用来定义类的成员变量进行操作的,是实现类内部功能的机制,同时也是类于外界进行交互的重要窗口。声明方法的语法格式如下:
[修饰符] 返回值的数据类型 方法名(参数1,参数2,...)
{
语句序列;
return [表达式];
}
注:如果不需要传递参数到方法中,只需要将小括号列出即可,不需要进一步加入参数。
在方法的定义中修饰符是可选项。方法的修饰符较多,包括访问控制符、静态修饰符、抽象修饰符、最终修饰符、同步修饰符和本地修饰符等。
public 公共访问控制符,指定该方法为公共的,他可以被任意对象的方法访问
private 私有访问控制符,指定该方法只允许自己类的方法访问,其他任何类(包括子类)中的方法均不能访问此方法
protected 保护访问控制符,指定该方法只可以被他的类及其子类或同一包中的其他类访问
缺省 却上访问控制符时,则表示在同一包中的其他类可以访问此成员方法,而其他包中的类蹦年访问此方法
final 最终修饰符,指定该方法不能被重载
static 静态修饰符,指定不需要实例化一个对象就可以调用的方法
abstract 抽象修饰符,指定该方法只声明方法头,而没有方法体,抽象方法需在子类中被实现
synchronized 同步修饰符。在多线程中,该修饰符用于对同步资源加锁,以防止其他线程访问,运行结束后进行解锁
native 本地修饰符。指定此方法的方法体是用其他语言(RU c )在程序外部编写的
成员方法于成员变量之间有多个控制修饰符,当用两个以上的修饰符来修饰一个方法时,需要注意,某些修饰符之间是不相容的。
4.成员变量与局部变量之间的差别
(1)从语法上来看,成员变量属于类,而局部变量是方法中定义的变量或是方法的参数;成员变量可以被public、private、static等修饰符所修饰,而局部变量则不能被访问控制修饰符及static所修饰,成员变量之和局部变量都可以被final所修饰;
(2)从变量在内存上存储的形式来看,成员变量是对象的一部分,而对象是存在于堆内存的,而局部变量是存在与栈内存的;
(3)从变量在内存中的生存时间上来看,成员变量是对象的一部分,他随着对象的创建而存在,而局部变量随着方法的调用而产生,随着方法调用的结束而消失;
(4)成员变量如果没有被赋初值,则会自动以类型的默认值赋值(有一种例外情况除外,被final修饰且没有static修饰的成员变量必须显式地赋值);而局部变量则不会自动赋值,必须显式地赋值后才能使用。
6.3 对象的创建与使用
对象是整个面向对象程序设计的理论基础,由于面向对象程序中使用类来创建对象,所以可以将对象理解为一种新型的变量,他保存着一些比较有用的数据,但可以要求他对自身进行操作。一个对象的使用周期是:创建——使用——销毁。
6.3.1 创建对象
由于对象是类的实例,所以对象属于某个已知的类,因此要创建属于某类的对象,可通过如下两个步骤完成。
(1)声明指向“由类所创建的对象”的变量;
(2)利用new运算符创建新的对象,并可指派给前面所创建的变量。
6.3.2 对象的使用
创建新对象之后,就可以对对象的成员进行访问。通过对象来引用对象的成员格式如下:
对象名.对象成员
6.3.3 在类定义内调用方法
在类内,另一个方法可以直接调用该方法,但是不需要对象名。
6.4 参数的传递
方法中可以有各种不同类型的参数。
6.4.1 以变量为参数调用方法
调用方法并传递参数时,参数其实就是方法的自变量,所以参数要放在犯法的括号来进行传递、括号内的参数可以是数值型,字符串型,甚至是对象。
6.4.2 以数组作为参数或返回值的方法调用
方法不只可以用来传送一般的变量,也可以用来传递数组。
1.传递数组
要传递数组到方法中,只需要指明要传入的参数是一个数组即可。
2.返回值为数组类型的方法
一个方法如果没有返回值,则在该方法前面用void修饰,如果返回值的类型为简单数组类型,那么只需在声明方法的前面加上相应的数据类型;同理,若需方法返回一个数组,则必须在该方法的前面加上数组类型的修饰符。
6.5 匿名对象
当一个对象被创建之后,在调用该对象的方法时,也可以不定义对象的引用变量,而直接调用这个对象的方法,这样的对象叫做匿名对象。
最后
以上就是开心小蝴蝶为你收集整理的Java学习4——书本自学的全部内容,希望文章能够帮你解决Java学习4——书本自学所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复