Java中的类和对象

分享到:
           

    在java语言里,对象是一组描述对象的属性和操作方法的集合,其中属性表明对象的状态,方法表明对象的行为。类是对象的定义。一个对象具有哪些属性和方法,由类来决定。从编程角度看,类是一种复合数据类型,它封装了一组变量和方法(函数)。

    人们通过观察对象的属性和行为来了解对象,对象的属性描述了对象的状态,对象的行为描述了对象的功能。对象一般有如下特性:

    (1)有一个名字以区别于其他对象。

    (2)有一些状态用来描述它的某些特征。

    (3)有一组操作,每个操作决定了对象的一种功能或行为。

    这样,可以让程序员乃至非专业人员更好地理解程序。它涉及一个从“具体”到“抽象”,再从“抽象”到“具体”的过程。所谓“从‘具体’到‘抽象’”,也就是将现实世界中的一个个具体的“物体”(或称为“实体(Entity)”)相应的特征和行为抽象出来,并且将各种具有相同特征的“物体”分为一个个的“类”,如“汽车”类、“人”类、“房子”类等;而所谓“从‘抽象’到‘具体’”,就是将上面抽象出来的对应物体的“类”,使用具体的计算机语言来描述,比如,使用Java语言来描述“汽车”类、“人”类、“房子”类等,和使用C++语言来描述这些类是有区别的。

    正如前面所述,“类”相对于现实世界中的“实体种类”(Entity Category),如汽车、人类、房子等,它是现实生活中某类实体的抽象。而对象,或者实体(Instance),指的是这些种类中的一个个具体存在,如Benz-600、Santana-2000等具体的汽车,或者张三、李四等具体的个人。类和对象是面向对象编程思想中的核心和基础。类是作为对象的蓝图而存在的,所有的对象都依据相应的类来产生,在面向对象的术语中,这个产生对象的过程称为“实例化”。

    用一个具体的例子来进一步说明“类”和“对象”之间的联系与区别。以汽车为例,只要是汽车,都应该有以下一些特性:轮子、引擎、方向盘、刹车等组件,可以通过这些组件来操作汽车,改变汽车的状态,如加速、转向、减速等,这些都是汽车的共性。具体到某辆汽车,它可能有80cm的轮子、40cm的方向盘、A6引擎,它是一个确定的实例。使用“汽车类”这个蓝图,就可以生产出一辆辆的汽车“实例”。这和盖房子一样,根据一张图纸,可以盖出任意数量的房子,而这些房子都有一样的特征。

    如果说一切都可以成为对象,那么是什么决定了某一类对象的外观和行为呢?类是对某个对象的定义,用来描述一组具有相同特征对象的:

    (1)应包括的数据。

    (2)行为特征。

    类包含有关对象动作方式的信息,包括它的名称、方法、属性和事件。实际上类本身并不是对象,因为它不存在于内存中。当引用类的代码运行时,类的一个新的实例,即对象,就在内存中创建了。一个类能从这个类在内存中创建多个相同类型的对象。因此,类应该包括两个方面的内容。

    (1)属性:用来描述对象的数据元素称为对象的属性(也称为数据/状态)。

    (2)方法:对对象的属性进行的操作称为对象的方法(也称为行为/操作)。

    Java语言中类的声明,也称类的定义,其语法规则如下:

    [< modifiers>] class < class_name> {
    [<attribute_declarations>]
    [<constructor_declarations>]
    [<method_declarations>]
    }

    其中各组成部分的含义如下:

    <modifiers>为修饰符,可用的有public、abstract和final等关键字(关键字是Java语言中赋以特定含义,并用做专门用途的单词,类名、方法名和属性名及变量名不能是关键字),用于说明所定义的类有关方面的特性。对于各种关键字和它们的含义及各自的适用范围,请看后续章节的介绍。

    类成员有3种不同的访问权限:

    (1)公有( public关键字修饰 )类成员可以在类外访问。

    (2)私有( private关键字修饰 )类成员只能被该类的成员函数访问。

    (3)保护( protected关键字修饰 )类成员只能被该类的成员函数或派生类的成员函数访问。

    class关键字表明这是一个类的定义,将告诉你一个新类型的对象看起来是什么样的。

    <class_name>是类的名字,类名一般使用一个用于表示这个类的名词来表示。

    <attribute_declarations>是属性(Attribute)声明部分。

    <constructor_declarations>是构造器(Constructor)声明部分。

    <method_declarations>是方法(Method)声明部分。

    可以将上述的“学生”实体的基本特征当成“学生”类的属性,然后,再定义一些方法来对这些属性进行操作。这里,将这些操作属性的方法定义得很简单:每个属性都有相应的设置(setter)和获取(getter)方法,设置方法将传入的参数赋给对象的属性,而获取方法取得对象的属性。

源文件:Student.java

    public class Student {
        // 定义属性
        String name;
        String sex;
        int grade;
        int age;

        // 定义属性“name”的设置方法
        public void setName(String _name) {
            name = _name;
        }

        // 定义属性“name”的获取方法
        public String getName() {
            return name;
        }

        // 定义属性“Sex”的设置方法
        public void setSex(String _sex) {
            sex = _sex;
        }

        // 定义属性“Sex”的获取方法
        public String getSex() {
            return sex;
        }

        // 定义属性“grade”的设置方法
        public void setGrade(int _grade) {
            grade = _grade;
        }

        // 定义属性“grade”的获取方法
        public int getGrade() {
            return grade;
        }

        // 定义属性“age”的设置方法
        public void setAge(int _age) {
            age = _age;
        }
        // 定义属性“age”的获取方法
        public int getAge() {
            return age;
        }
    }

   热点链接:

   1、Java构造器的使用方法
   2、Java驱动在智能嵌入式设备上更具优势
   3、如何学习嵌入式?

更多新闻>>