类的定义

类既是函数的容器,也用来表示自定义数据类型。

所谓自定义数据类型,就是除了八种基本类型以外的其他类型,用于表示和处理基本类型以外的其他数据。

一个数据类型,由其包含的属性以及该类型可以进行的操作组成。属性又可以分为是类型本身具有的属性,还是一个具体数据具有的属性。同样,操作也可以分为是类型本身可以进行的操作,还是一个具体数据可以进行的操作。

由此,一个数据类型就主要由四部分组成:

  • 类型本身具有的属性,通过类变量体现

  • 类型本身可以进行的操作,通过类方法体现

  • 类型实例具有的属性,通过实例变量体现

  • 类型实例可以进行的操作,通过实例方法体现

类方法

static表示类方法,又称静态方法。与类方法相对的是实例方法,实例方法没有static修饰符,必须通过实例或者叫对象调用。而类方法可以直接通过类名进行调用,不需要创建实例。

类变量

类型本身具有的属性通过类变量体现,经常用于表示一个类型中的常量。

比如Math类中定义的两个数学常量:

1
2
public static final double E = 2.7182818284590452354;
public static final double PI = 3.14159265358979323846;

static表示是类变量。与类变量相对的是实例变量,没有static修饰符。

final表示变量被赋值后,就不能再修改了。

实例变量

实例变量表示具体的实例所具有的属性。与基本类型对比, int a;这个语句,int就是类型,a就是实例。

实例方法

实例方法表示具体的实例可以进行的操作。

在实例方法中,有一个隐含的参数(this),这个参数就是当前操作的实例自己,它直接操作方法和变量。

  • 类方法只能访问类变量,但不能访问实例变量。可以调用其他的类方法,但不能调用实例方法。
  • 实例方法既能访问实例变量,也可以访问类变量。既可以调用实例方法,也可以调用类方法。

class变量和数组变量本身不存储数据,而只是存储实际内容的位置,它们都称为引用类型的变量。

通过对象来访问和操作其内部的数据是一种基本的面向对象思维。

定义一个合格的类,实例变量是private属性,通过实例方法来操作实例变量。代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class Point {
private int x;
private int y;

public void setX(int x) {
this.x = x;
}

public void setY(int y) {
this.y = y;
}

public int getX() {
return x;
}

public int getY() {
return y;
}

public double distance() {
return Math.sqrt(x*x + y*y);
}
}

this关键字表示当前实例,实例方法中隐含的参数就是this。

在语句this.x=x;中,this.x表示实例变量x,右边的x表示方法参数中的x。

使用这个类的代码如下:

1
2
3
4
5
6
public static void main(String[] args) {
Point p = new Point();
p.setX(2);
p.setY(3);
System.out.println(p.distance());
}

将对实例变量的直接访问改为了方法调用。

引入构造方法

1
2
3
4
5
6
7
8
public Point() { //调用第二个构造方法
this(2,3);
}

public Point(int x,int y) {
this.x=x;
this.y=y;
}

上面代码中的两个方法就是构造方法,构造方法可以有多个。

构造方法的特殊之处:

  • 名称是固定的,与类名相同。

  • 不能有返回值。

this不仅可以访问实例变量,还可以在构造方法中调用其他方法,这个this调用必须放在第一行。

  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.
  • Copyrights © 2021 Silver Shaded
  • Visitors: | Views:

请我喝杯咖啡吧~

支付宝
微信