Java Object And Class

吃可爱长大的小学妹 提交于 2020-03-10 10:23:12

1、对象
    理解面向对象技术的关键,真实世界中的对象有2个共同的特征:它们都有行为和状态。识别真实世界的状态和行为是从面向对象思维的一个好方法。

    软件对象在概念上类似于现实世界对象:它们包括状态和行为。一个对象在字段来存储它的状态并通过方法暴露它的行为。方法操作一个对象的内部状态和对象通讯的主要机制。隐藏内部状态 和 要求所有的相互作用是通过对象的方法被执行 被称为 数据封装,属于面向对象编程的一个基本原则。

    考虑自行车建模为一个软件对象:
通过描述状态(当前齿轮、当前踏板节奏、当前速度) 和 提供一些方法来改变状态,对象控制着外部世界如何被允许使用它。如:自行车仅有6个齿轮,改变齿轮的方法能够拒绝任何小于1or大于6的值。
    捆绑代码到单个软件对象,提供很多优点,如:
    a、模块化:一个对象的源代码的编写/维护可以和其他对象保持独立。一旦创建,一个对象可以很容易的在系统内部传递。
    b、信息隐藏:通过一个对象的方法与外部相互作用,其内部的实现细节保持隐藏
    c、代码重用:如果一个对象已经存在,你可以在你的应用中使用它
    d、易于插件化和调试:如果一个特定的对象原来是有问题,你可以方便的将它移除并插入一个不同的对象作为它的替代。

2、类
    在真实的世界中,你通常会发现许多不同的对象是属于同一种。有可能存在成千上万自行车,在所有相同的品牌和型号,每一辆自行车都根据相同的蓝图建造,因此都具有相同的组件。用面向对象的术语,你的自行车被称为自行车类的一个实例,A类则是单个对象创建的蓝图。

    下面Bicycle类是自行车的一个可能的实现:
    class Bicycle {

    int cadence = 0;
    int speed = 0;
    int gear = 1;

    void changeCadence(int newValue) {
         cadence = newValue;
    }

    void changeGear(int newValue) {
         gear = newValue;
    }

    void speedUp(int increment) {
         speed = speed + increment;   
    }

    void applyBrakes(int decrement) {
         speed = speed - decrement;
    }

    void printStates() {
         System.out.println("cadence:" +
             cadence + " speed:" +
             speed + " gear:" + gear);
    }

    }
    字段cadence、 speed、 gear代表对象的状态, 方法changeCadence、 changeGear定义了该对象与外部世界的交互。
    你可能注意到Bicycle类无main方法,这是因为它不是一个完整的应用;它仅仅是自行车的一个蓝图,可能在应用中被使用。创建和使用新的Bicycle对象的职责属于应用中的其它的类。下面使用一个例子:
    class BicycleDemo {
    public static void main(String[] args) {

        // Create two different
        // Bicycle objects
        Bicycle bike1 = new Bicycle();
        Bicycle bike2 = new Bicycle();

        // Invoke methods on
        // those objects
        bike1.changeCadence(50);
        bike1.speedUp(10);
        bike1.changeGear(2);
        bike1.printStates();

        bike2.changeCadence(50);
        bike2.speedUp(10);
        bike2.changeGear(2);
        bike2.changeCadence(40);
        bike2.speedUp(10);
        bike2.changeGear(3);
        bike2.printStates();
    }
}
3、继承
    不同种类的对象往往有着一定的共同之处。山地自行车、公路自行车和双人自行车,都具有自行车的特点(当前齿轮、当前踏板节奏、当前速度),然而,它们定义不同的功能:双人自行车有2个座位和2套把手,公路自行车有下降把手,山地自行车有额外的链条。OOP允许类从其它类继承常用的状态和行为。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!