首页 > 编程笔记

Java类的定义和使用

Java 语言是面向对象的编程语言,和 C 语言有一定的不同,C 语言中没有“类”这种数据结构,或者说这种编程思想,而 Java 语言具备“类”这种数据结构,因此也就可以进行面向对象编程。

类的定义

在 Java 中,定义类的语法如下:
[修饰符] class 类的名字
{
    //这里可以编写构造器的定义、成员变量(属性)、方法等的定义
}
常见的定义类的修饰符有 public、protected、private,一般情况下会使用 public 来作为修饰符。public 表示在其他的类中也可以对这个类中的方法进行调用。

我们再来看一个具体的例子。首先打开编译器,Main 类中的代码为:
public class Main {

    public static void main(String[] args) {
    System.out.println("这是我们主类中的主方法,程序先从这里开始执行\n");
    }
}
然后准备新建一个类,类的名称可定义为 Cat。在 IDEA 编译器中,最好将两个不同的类编写到不同的文件中,因此下面再创建一个文件用于编写 Java 新类 Cat。

1) 将鼠标移动到左边的 Project 任务栏下,右击 src,在弹出的快捷菜单中单击 New,然后单击 Java Class,如下图所示。


图 1 单击Java Class

2) 将新建的 Java 类命名为 Cat,然后单击 OK 按钮,如下图所示:


图 2 Create New Class对话框

在进行类的命名时,要注意类名一般是由字母和数字所构成的组合,第一个字母一般为大写,并且第一个字符不能够是数字。

这样类Cat就创建好了。在新创建的类下可以看到程序已经把类最初的代码写好了,代码如下:
public class Cat {

}
虽然创建好了类,我们暂时将它放在这里不动。现在来学习一下有关“方法”的相关概念,稍后对类的编写会用到“方法”这个思想。

Java类方法

回到主类 Main 类中编写代码。在 Java 语言中,“方法”其实和 C 语言以及 Python 语言中“函数”的功能类似,使用起来是一样的,因此有些人也将 Java 中的“方法”称为“函数”。

一般在 main(主函数,也称为主方法)之外编写方法,然后就可以在 main 中调用方法,让方法可实现重复调用,提高代码的重复利用率。

下面通过一个例子来理解什么是 Java 中的方法:
public class Main {

    public static void main(String[] args) {
        haha();
    }
    public static void haha()
    {
        System.out.println("这个是haha方法中的数值");
    }
}
最后的输出为:

这个是haha方法中的数值


从这个例子中可以看出使用 Java 方法的语法为:
public static void 方法名()
{
    //其中编写具体的程序语句
}
由此可见,在 Main 类中有一个主方法 public static void main(String[] args),以及在 Main 类中所定义的 haha() 方法,全部写完则为:public static void haha(),每一个方法都可以在另一个方法中调用,就像我们首先在 main() 方法中定义了一个 haha() 方法,然后在 main() 方法中调用 haha() 方法,输出字符串“这个是haha函数中的数值”。

当然,定义 Java 方法的语法不仅仅有使用“public static void函数名()”的形式,还有一种形式是“public void方法名()”,使用这种形式一般是在另一个类中进行定义,而在本类中定义方法一般需要加上 static 这个关键字。

Java类的使用

前面在讲解 Java 方法之前,已经创建了一个 Cat 类,现在我们需要填补 Cat 中的代码。

在新建的这个类中,方法可以去掉 static 这个关键字,因为这是在另一个类中编写的,并没有在主类中编写,只有在主类中定义的方法才需要 static 关键字。

另外,需要说明的是,我们在另一个类中所定义的成员变量一般前面会加上 public,表示可以在主类中被调用,方法也同理。我们来看一个例子:
public class Cat {
    public String name;//定义成员变量name,前面的public表示这个属性可以在另一个类中调用
    public String color;//定义成员变量color
    public int age;      //定义成员变量age
    public void eat()//定义猫类能够执行的方法,void表示这个方法没有返回值
    {
        System.out.println("小猫"+name+"正在吃东西");
    }
    public void saycolor()
    {
        System.out.println("小猫"+name+"的颜色是"+color);
    }
    public void sayage()
        System.out.println("小猫"+name+"的年龄是"+age);
    }
}
由于我们规定了主方法在 Main 类中进行实例化,因此在 Main 类中就可以通过主方法调用 Cat 类的属性和方法,而在 Cat 类中就是定义的 Cat 属性和方法。

下面来看主方法中如何对 Cat 类进行对象的实例化:
public class Main {

    public static void main(String[] args) {
        System.out.println("这是我们主类中的主方法,程序先从这里开始执行");
        Cat cat1=new Cat();    //这里创建一个Cat类中的对象cat1
        cat1.name="小花";      //给cat1命名
        cat1.age=12;           //给cat1添加年龄
        cat1.color="蓝色";     //给cat1添加毛色
        cat1.saycolor();       //执行刚刚在Cat类中所定义的方法
        cat1.sayage();
        cat1.eat();
    }
}
最后输出结果是:

这是我们主类中的主方法,程序先从这里开始执行
小猫小花的颜色是蓝色
小猫小花的年龄是12
小猫小花正在吃东西

怎么样,很神奇吧?我们可以看到在两个不同的文件中,Main 类竟然通过某种关联打印出了另一个文件中所定义的猫类的属性,同时也能够执行猫类中的方法。

一般来讲,如果我们想要调用自己定义的另一个类中的方法,就需要创建一个对象,在一个大类中将一个对象实例化出来,比如将“猫”类中的一只猫拿出来,这个过程就是对象的创建。在 Java 编程中,这个过程是在主方法中实现的。

首先我们来看新建对象的语法:
类的名称 对象名=new 类的名称();
由于之前已经编写了 Cat 这个类,假设需要创建的对象名称为 cat1,这个名称是可以自行定义的,因此将上述中文形式替换为:
Cat cat1=new Cat();
有了对象之后,就可以调用 Cat 中的各种方法和属性了。因为 cat1 一定属于 Cat 这个大类,所以这个 cat1 将会拥有这个大类所具有的全部属性和方法。

如果要给 cat1 的某个属性赋值,那么可以使用“cat1.属性=xxx”这个语法进行赋值,xxx可能是字符串,也可能是数字;如果需要调用 cat1 已经具备的某个方法,那么使用“cat1.方法()”的形式进行调用。

这时再回过头来看刚才的程序,是不是对它的理解清楚许多了呢?

推荐阅读