Java:类和对象学习
(转自:http://c.biancheng.net/view/940.html)
1 基本概念
- 类:类是描述了一组有相同特性(属性)和相同行为(方法)的一组对象的集合。
- 对象:对象或实体所拥有的特征在类中表示时称为类的属性。
例如,每个人都具有姓名、年龄和体重,这是所有人共有的特征。但是每一个对象的属性值又各不相同,例如,小明和小红都具有体重这个属性,但是他们的体重值是不同的。
对象执行的操作称为类的方法。比如,“人”这个对象都具有的行为是“吃饭”,因此,吃饭就是“人”类的一个方法。
类是构造面向对象程序的基本单位,是抽取了同类对象的共同属性和方法所形成的对象或实体的“模板”。而对象是现实世界中实体的描述,对象要创建才存在,有了对象才能对对象进行操作。类是对象的模板,对象是类的实例。
2 Java类的定义及定义类时可用的关键字
同事说:类的定义就可以看成是陈述句。就好比咱们写记叙文的开头介绍时间地点人物一样。
类是Java中的引用数据类型,java中的程序都是基于类的。
2.1 类的定义
Java中定义类:使用class关键字,类名,表示程序体的大括号。
语法如下:
[public][abstract|final]class<class_name>[extends<class_name>][implements<interface_name>] {
// 定义属性部分
<property_type><property1>;
<property_type><property2>;
<property_type><property3>;
…
// 定义方法部分
function1();
function2();
function3();
…
}
提示:上述语法中,中括号“[]”中的部分表示可以省略,竖线“|”表示“或关系”,例如 abstract|final,说明可以使用 abstract 或 final 关键字,但是两个关键字不能同时出现。
上述语法中各关键字的描述如下。
- public:表示“共有”的意思。如果使用 public 修饰,则可以被其他类和程序访问。每个 Java 程序的主类都必须是 public 类,作为公共工具供其他类和程序使用的类应定义为 public 类。
- abstract:如果类被 abstract 修饰,则该类为抽象类,抽象类不能被实例化,但抽象类中可以有抽象方法(使用 abstract 修饰的方法)和具体方法(没有使用 abstract 修饰的方法)。继承该抽象类的所有子类都必须实现该抽象类中的所有抽象方法(除非子类也是抽象类)。
- final:如果类被 final 修饰,则不允许被继承。
- class:声明类的关键字。
- class_name:类的名称。
- extends:表示继承其他类。
- implements:表示实现某些接口。
- property_type:表示成员变量的类型。
- property:表示成员变量名称。
- function():表示成员方法名称。
2.2 Java 类名的命名规则
- 类名应该以下划线(_)或字母开头,最好以字母开头。
- 第一个字母最好大写,如果类名由多个单词组成,则每个单词的首字母最好都大写。
- 类名不能为 Java 中的关键字,例如 boolean、this、int 等。
- 类名不能包含任何嵌入的空格或点号以及除了下划线(_)和美元符号($)字符之外的特殊字符。
2.3 Java 类的小例子
定义类的步骤:
(1) 声明类。编写类的最外层框架,声明一个名称为 Person 的类。
- public class Person {
- // 类的主体
- }
(2) 编写类的属性。类中的数据和方法统称为类成员。其中,类的属性就是类的数据成员。通过在类的主体中定义变量来描述类所具有的特征(属性),这里声明的变量称为类的成员变量。
(3) 编写类的方法。类的方法描述了类所具有的行为,是类的方法成员。可以简单地把方法理解为独立完成某个功能的单元模块。
下面来定义一个简单的 Person 类。
- public class Person {
- private String name; // 姓名
- private int age; // 年龄
- public void tell() {
- // 定义说话的方法
- System.out.println(name+"今年"+age+"岁!");
- }
- }
如上述代码,在 Person 类中首先定义了两个属性,分别为 name 和 age,然后定义了一个名称为 tell() 的方法。
3 Java类的属性:成员变量的定义和声明
类是Java中的引用数据类型,java中的程序都是基于类的。
3.1 类的定义
Java中定义类:使用class关键字,类名,表示程序体的大括号。
语法如下:
[public|protected|private][static][final]<type><variable_name>
各参数的含义如下。
- public、protected、private:用于表示成员变量的访问权限。
- static:表示该成员变量为类变量,也称为静态变量。
- final:表示将该成员变量声明为常量,其值无法更改。
- type:表示变量的类型。
- variable_name:表示变量名称。
可以在声明成员变量的同时对其进行初始化,如果声明成员变量时没有对其初始化,则系统会使用默认值初始化成员变量。
初始化的默认值如下:
- 整数型(byte、short、int 和 long)的基本类型变量的默认值为 0。
- 单精度浮点型(float)的基本类型变量的默认值为 0.0f。
- 双精度浮点型(double)的基本类型变量的默认值为 0.0d。
- 字符型(char)的基本类型变量的默认值为 “\u0000”。
- 布尔型的基本类型变量的默认值为 false。
- 数组引用类型的变量的默认值为 null。如果创建了数组变量的实例,但没有显式地为每个元素赋值,则数组中的元素初始化值采用数组数据类型对应的默认值。
定义类的成员变量的示例如下:
- public class Student {
- public String name; // 姓名
- final int sex = 0; // 性别:0表示女孩,1表示男孩
- private int age; // 年龄
- }
上述示例的 Student 类中定义了 3 个成员变量:String 类型的 name、int 类型的 sex 和 int 类型的 age。其中,name 的访问修饰符为 public,初始化值为 null;sex 的访问修饰符为 friendly(默认),初始化值为 0,表示性别为女,且其值无法更改;age 的访问修饰符为 private,初始化值为 0。
4 例 1
下面以一个简单的例子来介绍成员变量的初始值,代码如下所示。
- public class Counter {
- static int sum;
- public static void main(String[] args) {
- System.out.println(sum);
- }
- }
在这里用静态的方法来修饰变量 sum,输出结果是 int 类型的初始值,即:0。