You are on page 1of 3

 

(/) About (/about)

Python (http://www.learnpython.org) Java (http://www.learnjavaonline.org) C (http://www.learn­c.org)

JavaScript (http://www.learn­js.org) PHP (http://www.learn­php.org) Shell (http://www.learnshell.org)

C# (http://www.learncs.org) Jobs (/recruit­coders­jobs)

 (/cn/)  (/en/)

Welcome (/en/Welcome)  /  Objects

 Previous Tutorial (/en/Functions) Next Tutorial   (/en/Compiling_and_Running_with_Arguments)

Objects
Everything in Java is within classes and objects. Java objects hold a state, state are variables which are saved
together within an object, we call them fields or member variables.

Let start with an example:

class Point {
    int x;
    int y;
}

Execute Code

This class defined a point with x and y values.

In order to create an instance of this class, we need to use the keyword  new .

Point p = new Point();

Execute Code

In this case, we used a default constructor (constructor that doesn't get arguments) to create a Point. All classes
that don't explicitly define a constructor has a default constructor that does nothing.

We can define our own constructor:

class Point {
    int x;
    int y;

    Point(int x, int y) {
        this.x = x;
Code Window Run   Reset   Solution
        this.y = y;
    }
Output Window Expected Output   Show Code Window
}

 (http://www.dmca.com/Protection/Status.aspx?ID=fd56e7e2­9e1f­43cc­be7c­e1023cb5781c)
Execute Code
Copyright © LearnJavaOnline.org. Read our Terms of Use (/tos) and Privacy Policy (/privacy)
This means we can not longer use the default constructor  new Point() . We can now only use the defined
constructor  new Point(4, 1) .

We can define more than one constructor, so  Point  can be created in several ways. Let's define the default


constructor again.

class Point {
    int x;
    int y;

    Point() {
        this(0, 0);
    }

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

Execute Code

Notice the usage of the  this  keyword here. We can use it within a constructor to call a different constructor (in


order to avoid code duplication). It can only be the first line within the constructor.

We also used the  this  keyword as a reference of the current object we are running on.

After we defined  p  we can access  x  and  y .

p.x = 3;
p.y = 6;

Execute Code

Methods
We can now define methods on  Point .

class Point {
    ... // Our code previously
    void printPoint() {
        System.out.println("(" + x + "," + y + ")");
    }

    Point center(Point other) {
        // Returns the center between this point the other point
        // Notice we are using integer, we wan't get an accurate value
        return new Point((x + other.x) / 2, (y + other.y) / 2);
    }
Code Window Run   Reset   Solution
}

Output Window Expected Output   Show Code Window


Execute Code

 (http://www.dmca.com/Protection/Status.aspx?ID=fd56e7e2­9e1f­43cc­be7c­e1023cb5781c)
Copyright © LearnJavaOnline.org. Read our Terms of Use (/tos) and Privacy Policy (/privacy)
Public and Private
Although we'll talk about modifiers later on, it's important to understand the different between private and public
variables and methods.

When using the keyword  private  before a variable or a method, it means only the class itself can access the


variable or method, when we're using  public  it means everybody can access it. We usually see constructors
defined as public, variables defined as private and methods are separated, some public and some private.

Exercise
Write a new method in Point called  scale , that will make the point closer by half to (0,0). So for example, point
(8, 4) after scale will be (4, 2).

 Start Exercise

(http://www.spoj.com/?utm_campaign=permanent&utm_medium=banner&utm_source=learnx)

 Previous Tutorial (/en/Functions) Next Tutorial   (/en/Compiling_and_Running_with_Arguments)

Code Window Run   Reset   Solution

Output Window Expected Output   Show Code Window

 (http://www.dmca.com/Protection/Status.aspx?ID=fd56e7e2­9e1f­43cc­be7c­e1023cb5781c)
Copyright © LearnJavaOnline.org. Read our Terms of Use (/tos) and Privacy Policy (/privacy)

You might also like