面向对象基本概念
面向对象是一种新兴的程序设计方法,或者说是一种新的程序设计规范,其基本思想是使用对象、类、继承、封装、消息等基本概念来进行程序设计。它是从现实世界客观存在的事物(即对象)出发来构造软件系统的,并且在系统构造中尽可能运用人类的自然思维方式。
对象:对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位。对象由属性和对属性进行操作的一组服务组成。
类:把众多是事物归纳、划分成一些是人类在认识客观世界时经常采用的思维方式。分类的原则是抽象的。类是具有相同属性和服务的一组对象的集合,它为属于该类的所有对象提供了统一的抽象描述,其内部包括属性和服务两个主要部分。在面向对象编程语言中,类是一个独立的程序单位,它应该有一个类名并包括属性说明和服务说明两个主要部分。类与对象的关系就如同模具与铸件的关系,类的实例化的结果是对象,而对一类对象的抽象就是类。
消息:消息就是向对象发出的服务请求,它包括:提供服务的对象标识、服务标识、输入信息、回答信息。服务通常被称为方法或函数。
类与对象
在面向对象中,类和对象是最基本、最重要的组成单元。类实际上是表示一个客观世界某类群体的一些基本特征抽象。
类:描述了一组有相同 属性(特点) 和 方法(行为) 的集合。可以看成一类事物的模板,使用事物的属性特征和行为特征来描述该类事物。
属性:就是该事物的状态信息。
方法:就是该事物能够做什么。
例如,**类:**人类;
属性:名字、性别、体重、身高、年龄;
行为:吃饭、说话、学习;
人类叫张三?人类吃了一碗米饭?“人类”只是一个抽象的概念,它仅仅是一个概念,是不存在的实体!
对象:对象是类的一个实例(对象不是找个女朋友),有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。
类:类是一个模板,它描述一类对象的行为和状态。
现在让我们深入了解什么是对象。看看周围真实的世界,会发现身边有很多对象,车,狗,人等等。所有这些对象都有自己的状态和行为。拿一条狗来举例,它的状态有:名字、品种、颜色,行为有:叫、摇尾巴和跑。对比现实对象和软件对象,它们之间十分相似。软件对象也有状态和行为。软件对象的状态就是属性,行为通过方法体现。在软件开发中,方法操作对象内部状态的改变,对象的相互调用也是通过方法来完成。
类的定义
在 Java 中定义一个类,需要使用 class 关键字、一个自定义的类名和一对表示程序体的大括号。完整语法如下:
[public][abstract|final]class
// 定义属性部分
…
// 定义方法部分
function1();
function2();
…
}
Java 类名的命名规则:
1.类名应该以下划线(_)或字母开头,最好以字母开头。
2.第一个字母大写,如果类名由多个单词组成,则每个单词的首字母最好都大写。
3.类名不能为 Java 中的关键字,例如 boolean、this、int 等。
4.类名不能包含任何嵌入的空格或点号以及除了下划线(_)和美元符号($)字符之外的特殊字符。
创建一个新的类,就是创建一个新的数据类型。实例化一个类,就是得到类的一个对象。因此,对象就是一组变量和相关方法的集合,其中变量表明对象的状态和属性,方法表明对象所具有的行为。定义一个类的步骤如下所述:
(1) 声明类。编写类的最外层框架,声明一个名称为 Person 的类。
public class Person { // 类的主体
}
(2) 编写类的属性。类中的数据和方法统称为类成员。其中,类的属性就是类的数据成员。通过在类的主体中定义变量来描述类所具有的特征(属性),这里声明的变量称为类的成员变量。
成员变量又分为类变量(有static修饰)和实例变量(没有static修饰)
声明成员变量的语法如下:
[public|protected|private][static][final]
1
各参数的含义如下。
public、protected、private:用于表示成员变量的访问权限。(不写就是default)
作用域 当前类 同一包 子孙类 其它包
public √ √ √ √
protected √ √ √
default(friendly) √ √
private √
static:表示该成员变量为类变量,也称为静态变量。
Java虚拟机(JVM)只为静态变量分配一次内存,在加载类的过程中完成静态变量的内存分配。由于静态变量属于类(类级别),而不是某个对象所有,因而可以直接通过类名访问这类变量。通过类名.属性的方式访问静态变量。
final:在Java中,final关键字可以用来修饰类、方法和变量(包括成员变量和局部变量)。
final修饰变量时表示将该成员变量声明为常量,其值无法更改(final修饰对象时维护的是其引用地址不变,而不是对象的属性不变)。对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象,但该引用所指向的对象的内容是可以发生变化的。
type:表示变量的类型。
variable_name:表示变量名称。
可以在声明成员变量的同时对其进行初始化,如果声明成员变量时没有对其初始化,则系统会使用默认值初始化成员变量。
初始化的默认值如下:
数据类型 默认值
byte 0
short 0
int 0
long 0L
float 0.0f
double 0.0
boolean false
char u0000代表字符为空
引用类型 null
定义类的成员变量的示例如下:
public class Student {
public String name; // 姓名
final int sex = 0; // 性别:0表示女孩,1表示男孩
private int age; // 年龄
}
修饰符:修饰符是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。
返回值类型 :方法可能会返回值。returnValueType 是方法返回值的数据类型。有些方法执行所需的操作,但没有返回值。在这种情况下,returnValueType 是关键字void。
方法名:是方法的实际名称。方法名和参数表共同构成方法签名。
-参数类型:参数像是一个占位符。当方法被调用时,传递值给参数。这个值被称为实参或变量。参数列表是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以不包含任何参数。
方法体:方法体包含具体的语句,定义该方法的功能。