Would you like to inspect the original subtitles? These are the user uploaded subtitles that are being translated:
1
00:00:01,310 --> 00:00:04,250
A class can override methods that it inherits.
2
00:00:07,410 --> 00:00:11,160
You saw that the object class is the common ancestor of every class.
3
00:00:13,070 --> 00:00:16,129
So every class inherits methods from the object class.
4
00:00:18,980 --> 00:00:22,730
Now, a class can customize, it can override methods that it inherits.
5
00:00:25,900 --> 00:00:28,960
So in this lesson, you're going to learn to override the equals method.
6
00:00:32,850 --> 00:00:38,940
When the double equal operator is used for objects, it compares the references, it returns true if
7
00:00:38,940 --> 00:00:40,080
the references are equal.
8
00:00:47,650 --> 00:00:50,890
So inside main job, a person to equal to person.
9
00:00:56,210 --> 00:00:59,660
And then check if person to double eagles person.
10
00:01:05,099 --> 00:01:05,990
Run the debugger.
11
00:01:09,890 --> 00:01:15,290
Person to any person share the same reference, so the double equals sign returns true.
12
00:01:16,280 --> 00:01:18,920
Now what if I said person two equal to a copy of person?
13
00:01:24,540 --> 00:01:25,560
We run the debugger.
14
00:01:28,590 --> 00:01:34,200
Person to store is a reference that points to a new object, and because they don't share the same reference,
15
00:01:34,410 --> 00:01:37,080
then the operator is going to determine that they're not equal.
16
00:01:40,330 --> 00:01:44,380
That being said, never used a double equals sign to compare objects.
17
00:01:50,280 --> 00:01:52,920
Remember, that object is the ancestor of every class.
18
00:01:53,070 --> 00:01:57,420
So by default, our person class is going to inherit this equals method.
19
00:01:59,900 --> 00:02:01,440
Let's use it and see what happens.
20
00:02:01,790 --> 00:02:04,730
We'll check if person two equals person one.
21
00:02:08,190 --> 00:02:09,060
Run the debugger.
22
00:02:16,890 --> 00:02:21,030
They don't share the same references, they do share the same fields.
23
00:02:23,590 --> 00:02:24,940
But it returns false.
24
00:02:34,590 --> 00:02:39,450
If you have another look at the equals method that we're inheriting, it returns true only if the references
25
00:02:39,450 --> 00:02:39,900
are equal.
26
00:02:42,880 --> 00:02:48,880
So hear us saying this is no different than saying this person two equals person one.
27
00:02:50,630 --> 00:02:53,000
You can even confirm this, relaunch the debugger.
28
00:03:01,390 --> 00:03:04,630
And it steps into the equals method inside the object class.
29
00:03:06,930 --> 00:03:12,010
And you can see that a default equals method that we're inheriting compares the references of two objects.
30
00:03:12,930 --> 00:03:15,240
That's why we need to override the equals method.
31
00:03:16,530 --> 00:03:22,410
Override means to change the logic of an inherited method, you're going to customize, you're going
32
00:03:22,410 --> 00:03:25,230
to override the equals method for the person class.
33
00:03:30,520 --> 00:03:32,380
You already know how to override an equals method.
34
00:03:32,410 --> 00:03:34,120
You've done it a million times before.
35
00:03:34,270 --> 00:03:38,380
All we have to do is replicate the signature of the equals method we're inheriting.
36
00:03:40,840 --> 00:03:45,520
And here we can write to whatever we want, we could print high and return false.
37
00:03:49,690 --> 00:03:55,250
But the point is, we overrode the equals method and JAV is now going to use this one instead, try
38
00:03:55,390 --> 00:03:59,980
it out, run the debugger and it calls the equals method we overrode.
39
00:04:08,650 --> 00:04:14,530
Now, there's a much easier way to override equals, just the right equals, and let Intellisense autocomplete
40
00:04:14,530 --> 00:04:16,930
the method for you and beautiful.
41
00:04:19,750 --> 00:04:21,880
Don't worry about what super is for now remove it.
42
00:04:25,820 --> 00:04:30,950
And now we can customize the equals method, just like we always do, if the object being passed in
43
00:04:30,950 --> 00:04:31,430
is No.
44
00:04:32,630 --> 00:04:33,560
Return false.
45
00:04:36,190 --> 00:04:39,580
If it's not an instance of the person class return false.
46
00:04:51,790 --> 00:04:54,280
If it is typecast, the object to person.
47
00:04:59,710 --> 00:05:04,060
And then compare the fields of the current object that's calling this method to the one that's being
48
00:05:04,060 --> 00:05:08,170
passed in return, the Stone Age equals person H.
49
00:05:10,960 --> 00:05:13,630
We're going to have to add some Gedda's first, let's do just that.
50
00:05:30,410 --> 00:05:31,130
And good.
51
00:05:34,510 --> 00:05:39,040
Now, the override annotation means we're overriding a method that we inherited.
52
00:05:39,460 --> 00:05:41,050
You don't have to include it.
53
00:05:41,080 --> 00:05:44,880
Remember, in the past, we never did, but you should leave it.
54
00:05:46,920 --> 00:05:52,050
Because if you misspell the method, it's going to throw an error and say there's no method equal to
55
00:05:52,050 --> 00:05:53,670
override, so that's good to have.
56
00:05:56,970 --> 00:06:01,260
Now, if you rerun the code, the person object calls the overwritten equals method.
57
00:06:17,520 --> 00:06:20,430
Let's recap, you overrode the equals method.
58
00:06:22,620 --> 00:06:28,980
Override it means changing the logic of an inherited method when you override a method, Jarvis starts
59
00:06:28,980 --> 00:06:30,180
using that one instead.
5754
Can't find what you're looking for?
Get subtitles in any language from opensubtitles.com, and translate them here.