Java 面向对象:类与对象的关系

  1. 类与对象的关系
  2. 构造器
  3. 创建对象
  4. 变量
  5. 静态方法
Photo by David Werbrouck on Unsplash

Photo by David Werbrouck on Unsplash

1. 类与对象的关系

在 Java 中,程序的最小单位是类(class)。

类是对象的抽象,对象是类的具体。

类是一般化的对象,对象是特殊化的类。

比如说犬是一个类,犬有许多不同的品种,有哈士奇、金毛、田园犬,它们就是一个个的对象。

1
2
3
4
5
6
7
8
// Java 定义类的语法格式
// 修饰符可以是 public、final、abstract
修饰符 class 类名
{
构造器
成员变量
方法
}
类与对象两者之间有什么不同?

类与对象两者之间有什么不同?

2. 构造器

构造器是一个特殊的方法,构造器的作用是用来产生对象的。在创建一个对象的时候,至少要调用一个构造器。构造器的名称必须与类同名,一个类可以有多个构造器。

1
2
3
4
5
6
// 定义构造器,构造器名必须与类名相同
// 形参:String name
public puppy(String name)
{
System.out.println("Input name is:" + name);
}

3. 创建对象

1
2
3
4
5
6
// 创建具体的对象
public static void main(String[] args)
{
// 调用 puppy 构造器,返回一个实例
puppy mypuppy = new puppy("Sweet");
}

4. 变量

变量必须有类型和名称,比如 int count,Java 中变量的命名规范,也可以说是标识符(变量、方法、类名):

  • 字母、下划线或 $ 开头,不能以数字开头
  • 除了首位,其他位置可以用数字
  • 避免使用保留字
  • 只能包含美元符号,不能使用 @、# 等其他特殊字符

当然在对变量进行命名的时候一定要考虑可读性,比如 LearnJava 一看就知道是什么意思,而 TodayJava 看起来就比较令人费解。

  • 局部变量:在方法、构造方法或者语句块中定义的变量被称为局部变量。变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。局部变量的修饰符只能是 final,可以省略。使用局部变量之前,必须先用 new 关键字创建实例才可以使用。

  • 成员变量:成员变量是定义在类中,方法体之外的变量。这种变量在创建对象的时候实例化。成员变量可以被类中方法、构造方法和特定类的语句块访问。

1
2
3
// Java 定义成员变量的格式
// 修饰符可以是 public protected private
修饰符 类型 成员变量名 [= 默认值]
1
2
3
4
5
6
7
8
9
10
public class puppy
{
// 定义成员变量
String name;
int puppyweight;
// 方法
public void ...
{
}
}
  • 类变量:也叫静态变量,类变量也声明在类中,方法体之外,但必须声明为static类型。

如果一个方法没有返回值,则必须使用 void 来声明没有返回值。

1
2
3
4
5
6
// 定义方法 1:设定体重
// 方法没有返回值,则必须使用 void 来声明没有返回值
public void setWeight(int weight)
{
puppyweight = weight;
}

5. 静态方法

1
2
3
4
5
// 定义方法的语法格式
[修饰符] 方法返回值类型 方法名(形参列表)
{
}

通常把 static 修饰的成员变量和方法称为静态变量(类变量)和静态方法(类方法),而相对应的则是实例变量和实例方法。

静态方法只能访问静态成员,实例方法可以访问静态和实例成员。之所以不允许静态方法访问实例成员变量,是因为实例成员变量是属于某个对象的,而静态方法在执行时,并不一定存在对象。

静态方法不能直接访问非静态成员

静态方法不能直接访问非静态成员

静态方法不能直接访问非静态成员

静态方法不能直接访问非静态成员

Java 方法需要注意的几点

  1. 修饰符:public static
  2. 返回值类型:分为无返回值(void)和有返回值,可以返回 Java 的任意数据类型
  3. 形参列表:也被称为形式参数列表,简称形参,形参是局部变量。与形参列表对应的实参列表,调用方法时传入方法的实参
  4. 方法名命名规则:首个单词保持小写,其余单词首字母大写,一般是动词为主
  5. 方法不能嵌套
  6. 方法的调用方式:“类名.方法”。方法在调用时,如果方法在本类中,“类名.”可以省略掉,如果方法不在本类中,则不能省略
方法命名规则,from Alibaba Java Coding Guidelines

方法命名规则,from Alibaba Java Coding Guidelines

  1. return 语句使用注意事项:一、必须返回与“返回值类型”相同类型的数据;二、return 一旦被执行,后面的语句全部都执行不到,也就是在同一个域中 return 后面永远不要编写代码
没有返回数据,编译器认为错误

没有返回数据,编译器认为错误

完整代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
public class puppy
{
// 定义成员变量
String name;
int puppyweight;
// 定义构造器,构造器名必须与类名相同
public puppy(String name)
{
System.out.println("Input name is:" + name);
}
// 定义方法 1:设定体重
// 方法没有返回值,则必须使用 void 来声明没有返回值,否则必须含有有效的 return 语句
public void setWeight(int weight)
{
puppyweight = weight;
}
// 定义方法 2:获取体重
public int getWeight()
{
System.out.println("Puppy's weight is:" + puppyweight);
return puppyweight;
}
// 创建具体的对象
public static void main(String[] args)
{
// 调用 puppy 构造器,返回一个实例
puppy mypuppy = new puppy("Sweet");
// 调用对象的方法 1 和 2
mypuppy.setWeight(12);
mypuppy.getWeight();
}
}

推荐阅读

  1. http://www.cnblogs.com/shenliang123/archive/2011/10/27/2226923.html
觉得还不错?帮我赞助点域名费吧:)