需要帮助理解一段Java代码

时间:2017-08-18 12:13:33

标签: java class oop

我今天开始学习Java,接着是Head First Java,第2版,我有一些代码,这对我来说很困惑。我有Python的经验,但这是新的。更具体地说,我不明白布尔值canRecord = false; 实际上。

class DVDPlayer {

    boolean canRecord = false;

    void recordDVD() {
        System.out.println("DVD recording");
    }
    void playDVD() {
       System.out.println("DVD playing");
   }    
} 

class DVDPlayerTestDrive {
    public static void main(String [] args) {

        DVDPlayer d = new DVDPlayer();
        d.canRecord = true;
        d.playDVD();

        if (d.canRecord == true) {
            d.recordDVD();
        }
    }
}   

2 个答案:

答案 0 :(得分:0)

在您的课程DVDPlayer上,您选择说普通DVDPlayer无法录制。所以你把它设置为假。

如果您希望它记录,您可以直接更改变量,就像您在DVDPlayerTestDrive类上所做的那样。

布尔值canRecord = false 仅用于向您显示可以重现对象的行为。在这种情况下,你有一个应该代表DVDPlayer的类,我们知道大多数DVD播放器都没有记录。

在面向对象编程的第一种方法中,不要过多关注代码(我假设它也是你的第一个OOP语言)。

尝试理解背后的概念和想法=)

答案 1 :(得分:0)

如果这个例子来自一本书,那么我甚至无法想象作者的意思。 我对这个例子的看法远非理想,但允许部分理解OOP的本质

class DVDPlayer {
    private final boolean recordable;

    // by default recordable false
    DVDPlayer() {
        this(false);
    }

    // you can specify recordable
    DVDPlayer(boolean recordable) {
        this.recordable = recordable;
    }

    void playDVD() {
        System.out.println("DVD playing");
    }

    void recordDVD() {
        if (recordable) {
            System.out.println("DVD recording");
        } else {
            System.out.println("non recordable");
        }
    }
}

class DVDPlayerTestDrive {
    public static void main(String [] args) {
        DVDPlayer d1 = new DVDPlayer(true);
        d1.recordDVD();
        d1.playDVD();

        DVDPlayer d2 = new DVDPlayer();
        d2.recordDVD();
        d2.playDVD();
    }

我希望,你明白了。