00:00:06
hello friends and welcome back in this
00:00:07
lecture we will talk about constructors
00:00:09
and here is our outline
00:00:11
we will talk in general about
00:00:12
constructors we will talk about the
00:00:14
default constructor
00:00:15
and finally we will talk about
00:00:16
overloading constructors
00:00:18
let's get started as you know a
00:00:20
constructor is a method that is used to
00:00:22
instantiate and
00:00:23
initialize objects now let's talk about
00:00:26
constructors in more details
00:00:28
first of all a constructor must have the
00:00:30
same name as the class
00:00:32
for example the constructor of the
00:00:34
string class is called string and the
00:00:36
constructor of the point class is called
00:00:38
point
00:00:39
also the constructor of the circle class
00:00:41
that we created
00:00:42
is called circle okay moreover
00:00:45
constructors don't have a return type
00:00:48
also constructors are invoked or called
00:00:51
using the new operator and as we said
00:00:53
before we should use constructors to
00:00:55
initialize
00:00:56
objects so we use constructors to give
00:00:59
initial values to the attributes of our
00:01:01
object
00:01:02
finally a default constructor is a zero
00:01:04
argument constructor with an empty body
00:01:07
so it is a constructor that doesn't take
00:01:09
any parameters and doesn't do anything
00:01:11
we simply use it to create an object
00:01:13
from the class
00:01:14
now let's consider the same class as
00:01:16
before which represents a circle
00:01:18
it has the following attributes and the
00:01:20
following methods
00:01:21
now we want to add this constructor it
00:01:24
is called circle because the name of the
00:01:25
class is circle
00:01:27
this constructor is going to take two
00:01:28
parameters the first parameter is a
00:01:30
point
00:01:31
and we are going to call it initial
00:01:32
center and the second parameter is a
00:01:34
double
00:01:35
and we will call it initial radius so
00:01:37
now when we create circle objects we can
00:01:39
give the constructor two arguments
00:01:42
a point and a double and we will
00:01:43
initialize the values of our attributes
00:01:46
with these values that are passed over
00:01:47
here
00:01:48
so our center attribute will be equal to
00:01:50
the initial center and our radius
00:01:52
attribute will be equal to the initial
00:01:54
radius so let's create this constructor
00:01:56
first of all i'm in the circle class and
00:01:58
we have these two attributes
00:02:00
and now we have a method that is called
00:02:02
circle and it doesn't have a return type
00:02:04
this method takes a point initial center
00:02:07
and a double initial radius
00:02:08
and inside this method we are assigning
00:02:10
the center attribute to be equal to the
00:02:12
initial center
00:02:13
and the radius to be equal to the
00:02:14
initial radius so this is our
00:02:16
constructor and you are using it to
00:02:18
initialize the values of the attributes
00:02:20
as you can see
00:02:21
so now let's use this constructor to
00:02:23
create circle objects
00:02:25
have a look at this code inside the main
00:02:27
method i'm creating a circle c1 which is
00:02:29
equal to a new circle
00:02:31
and over here i'm passing two arguments
00:02:33
so i'm calling the constructor that is
00:02:35
called circle and takes two arguments
00:02:38
the first argument is a point with x
00:02:40
equal one and y equal to and the second
00:02:42
argument is an integer
00:02:43
of course this value will be casted to a
00:02:46
double because the second argument is a
00:02:48
double
00:02:48
okay so now i'm printing the center of
00:02:50
the circle c1 and the radius and this
00:02:52
will be the output
00:02:54
so as you can see we use constructors to
00:02:56
initialize the attributes of our object
00:02:58
in other words we use it to initialize
00:03:00
our object now let's
00:03:01
try to use the default constructor over
00:03:04
here i'm creating a circle c1 which is
00:03:06
equal to a new circle
00:03:07
have a look over here we have an error
00:03:09
the error says expected two arguments
00:03:12
but found
00:03:12
zero so our circle class doesn't have a
00:03:15
default constructor anymore
00:03:17
it only has the constructor that takes
00:03:19
two arguments so have a look over here
00:03:21
when no constructors are created a
00:03:23
default constructor is created
00:03:25
automatically by java
00:03:26
but when we create a constructor the
00:03:28
default constructor is not created
00:03:30
in other words if you want a zero
00:03:32
argument constructor you have to create
00:03:34
it
00:03:35
so have a look over here now we are
00:03:37
creating two constructors
00:03:38
so we are overloading the constructor
00:03:41
the first constructor doesn't take any
00:03:42
parameters
00:03:43
and it does nothing it has an empty body
00:03:46
and the second constructor is the same
00:03:47
as before
00:03:48
so now we have two ways to create circle
00:03:50
objects the first one is using this
00:03:52
constructor
00:03:53
and in this case the value of the center
00:03:55
and the radius will be default values
00:03:57
the center will be null and the radius
00:03:59
will be zero and the second way is using
00:04:01
this constructor
00:04:02
and in this case the values of the
00:04:04
center and the radius will be given by
00:04:06
the user
00:04:06
now let's modify this constructor over
00:04:08
here let's suppose that when we use this
00:04:10
constructor we want to give default
00:04:12
values for the center and the radius
00:04:14
other than null and zero so have a look
00:04:16
over here
00:04:17
now inside this constructor we are
00:04:19
assigning the center to be equal to a
00:04:21
new point with x equals zero and y
00:04:23
equals zero
00:04:24
also we are assigning the radius to be
00:04:26
equal to one so now if you use this
00:04:28
constructor to create a circle object
00:04:30
the center will be equal to this point
00:04:31
and the radius will be equal to 1.
00:04:33
so if the user doesn't want to give a
00:04:35
value for the center and the radius he
00:04:37
can use this constructor
00:04:38
and you will give default values as you
00:04:40
can see so
00:04:42
now let's create circle objects using
00:04:44
both of these constructors have a look
00:04:46
over here
00:04:46
in our main method i'm going to create a
00:04:48
circle c1
00:04:50
using this constructor after that i'm
00:04:52
printing the center and the radius and
00:04:53
this is the output
00:04:54
as you can see the center is a point
00:04:56
with x equals 0 and y equals 0 and the
00:04:58
radius is equal to 1.0
00:05:00
so java automatically knows what
00:05:02
constructor to use based on the number
00:05:04
of parameters
00:05:05
now let's use the other constructor we
00:05:07
are creating a circle c2 and we are
00:05:09
passing values
00:05:10
as arguments after that i'm printing the
00:05:13
center and the radius and this will be
00:05:14
the output
00:05:15
now in this case we only have two
00:05:17
constructors and of course you can
00:05:19
create as many constructors as you want
00:05:21
we are simply overloading a method which
00:05:23
is the constructor
00:05:24
okay now i want to show you another
00:05:26
example of using two constructors
00:05:28
have a look over here i'm creating a
00:05:31
point p1
00:05:32
using this constructor it doesn't take
00:05:34
any parameters
00:05:35
and after that i'm printing p1 as you
00:05:37
will see over here
00:05:38
x will be equal to 0 and y will be equal
00:05:40
to 0. so inside the point class there is
00:05:43
a constructor that doesn't take any
00:05:45
parameters and you are able to use this
00:05:46
constructor over here
00:05:48
also we have another constructor this
00:05:50
constructor takes the value of x
00:05:52
and the value of y so over here i'm
00:05:54
creating a point p2
00:05:56
and after that i'm printing p2 and this
00:05:58
will be the output
00:05:59
so this is similar to what we have done
00:06:01
with the circle class okay
00:06:02
so this is it thanks for watching and
00:06:04
i'll see you in the next video
00:06:06
[Applause]
00:06:08
[Music]