Skip to content

Commit 223c7d0

Browse files
authored
BAEL-5417 - implements vs extends (eugenp#12011)
1 parent 085f271 commit 223c7d0

15 files changed

Lines changed: 443 additions & 0 deletions

File tree

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
package com.baeldung.implementsvsextends;
2+
3+
import com.baeldung.implementsvsextends.media.model.AudioMedia;
4+
import com.baeldung.implementsvsextends.media.model.Media;
5+
import com.baeldung.implementsvsextends.media.model.VideoMedia;
6+
import com.baeldung.implementsvsextends.media.player.impl.AudioMediaPlayer;
7+
import com.baeldung.implementsvsextends.media.player.impl.CustomMediaPlayer;
8+
import com.baeldung.implementsvsextends.media.player.impl.MultiMediaPlayer;
9+
import com.baeldung.implementsvsextends.media.player.impl.VideoMediaPlayer;
10+
11+
public class Main {
12+
13+
public static void main(String[] args) {
14+
15+
Media media = new Media();
16+
media.setId(001);
17+
media.setTitle("Media1");
18+
media.setArtist("Artist001");
19+
20+
AudioMedia audioMedia = new AudioMedia();
21+
audioMedia.setId(101);
22+
audioMedia.setTitle("Audio1");
23+
audioMedia.setArtist("Artist101");
24+
audioMedia.setBitrate(3500);
25+
audioMedia.setFrequency("256kbps");
26+
27+
VideoMedia videoMedia = new VideoMedia();
28+
videoMedia.setId(201);
29+
videoMedia.setTitle("Video1");
30+
videoMedia.setArtist("Artist201");
31+
videoMedia.setResolution("1024x768");
32+
videoMedia.setAspectRatio("16:9");
33+
34+
System.out.println(media);
35+
System.out.println(audioMedia);
36+
System.out.println(videoMedia);
37+
38+
AudioMediaPlayer audioMediaPlayer = new AudioMediaPlayer();
39+
audioMediaPlayer.play();
40+
audioMediaPlayer.pause();
41+
42+
VideoMediaPlayer videoMediaPlayer = new VideoMediaPlayer();
43+
videoMediaPlayer.play();
44+
videoMediaPlayer.pause();
45+
46+
MultiMediaPlayer multiMediaPlayer = new MultiMediaPlayer();
47+
multiMediaPlayer.play();
48+
multiMediaPlayer.pause();
49+
multiMediaPlayer.seek();
50+
multiMediaPlayer.fastForward();
51+
52+
CustomMediaPlayer customMediaPlayer = new CustomMediaPlayer();
53+
customMediaPlayer.play();
54+
customMediaPlayer.pause();
55+
customMediaPlayer.setId(301);
56+
customMediaPlayer.setTitle("Custom1");
57+
customMediaPlayer.setArtist("Artist301");
58+
System.out.println(customMediaPlayer);
59+
}
60+
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package com.baeldung.implementsvsextends.media.model;
2+
3+
public class AudioMedia extends Media {
4+
5+
private int bitrate;
6+
7+
private String frequency;
8+
9+
@Override
10+
public void printTitle() {
11+
System.out.println("AudioMedia Title");
12+
}
13+
14+
public int getBitrate() {
15+
return bitrate;
16+
}
17+
18+
public void setBitrate(int bitrate) {
19+
this.bitrate = bitrate;
20+
}
21+
22+
public String getFrequency() {
23+
return frequency;
24+
}
25+
26+
public void setFrequency(String frequency) {
27+
this.frequency = frequency;
28+
}
29+
30+
31+
@Override
32+
public String toString() {
33+
return "AudioMedia{" +
34+
"id=" + this.getId() +
35+
", title='" + this.getTitle() + '\'' +
36+
", artist='" + this.getArtist() + '\'' +
37+
", bitrate=" + bitrate +
38+
", frequency='" + frequency + '\'' +
39+
"} ";
40+
}
41+
}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package com.baeldung.implementsvsextends.media.model;
2+
3+
public class Media {
4+
5+
private int id;
6+
7+
private String title;
8+
9+
private String artist;
10+
11+
public void printTitle() {
12+
System.out.println("Media Title");
13+
}
14+
15+
public int getId() {
16+
return id;
17+
}
18+
19+
public void setId(int id) {
20+
this.id = id;
21+
}
22+
23+
public String getTitle() {
24+
return title;
25+
}
26+
27+
public void setTitle(String title) {
28+
this.title = title;
29+
}
30+
31+
public String getArtist() {
32+
return artist;
33+
}
34+
35+
public void setArtist(String artist) {
36+
this.artist = artist;
37+
}
38+
39+
@Override
40+
public String toString() {
41+
return "Media{" +
42+
"id=" + id +
43+
", title='" + title + '\'' +
44+
", artist='" + artist + '\'' +
45+
'}';
46+
}
47+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package com.baeldung.implementsvsextends.media.model;
2+
3+
public class VideoMedia extends Media {
4+
5+
private String resolution;
6+
7+
private String aspectRatio;
8+
9+
public String getResolution() {
10+
return resolution;
11+
}
12+
13+
public void setResolution(String resolution) {
14+
this.resolution = resolution;
15+
}
16+
17+
public String getAspectRatio() {
18+
return aspectRatio;
19+
}
20+
21+
public void setAspectRatio(String aspectRatio) {
22+
this.aspectRatio = aspectRatio;
23+
}
24+
25+
@Override
26+
public String toString() {
27+
return "VideoMedia{" +
28+
"id=" + this.getId() +
29+
", title='" + this.getTitle() + '\'' +
30+
", artist='" + this.getArtist() + '\'' +
31+
"resolution='" + resolution + '\'' +
32+
", aspectRatio='" + aspectRatio + '\'' +
33+
"} ";
34+
}
35+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package com.baeldung.implementsvsextends.media.player;
2+
3+
public interface AdvancedPlayerOptions {
4+
5+
void seek();
6+
7+
void fastForward();
8+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package com.baeldung.implementsvsextends.media.player;
2+
3+
public interface MediaPlayer {
4+
5+
void play();
6+
7+
void pause();
8+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package com.baeldung.implementsvsextends.media.player.impl;
2+
3+
import com.baeldung.implementsvsextends.media.player.MediaPlayer;
4+
5+
public class AudioMediaPlayer implements MediaPlayer {
6+
7+
@Override
8+
public void play() {
9+
System.out.println("AudioMediaPlayer is Playing");
10+
}
11+
12+
@Override
13+
public void pause() {
14+
System.out.println("AudioMediaPlayer is Paused");
15+
}
16+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.baeldung.implementsvsextends.media.player.impl;
2+
3+
import com.baeldung.implementsvsextends.media.model.Media;
4+
import com.baeldung.implementsvsextends.media.player.MediaPlayer;
5+
6+
public class CustomMediaPlayer extends Media implements MediaPlayer {
7+
8+
@Override
9+
public void play() {
10+
System.out.println("CustomMediaPlayer is Playing");
11+
}
12+
13+
@Override
14+
public void pause() {
15+
System.out.println("CustomMediaPlayer is Paused");
16+
}
17+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package com.baeldung.implementsvsextends.media.player.impl;
2+
3+
import com.baeldung.implementsvsextends.media.player.AdvancedPlayerOptions;
4+
import com.baeldung.implementsvsextends.media.player.MediaPlayer;
5+
6+
public class MultiMediaPlayer implements MediaPlayer, AdvancedPlayerOptions {
7+
8+
@Override
9+
public void play() {
10+
System.out.println("MultiMediaPlayer is Playing");
11+
}
12+
13+
@Override
14+
public void pause() {
15+
System.out.println("MultiMediaPlayer is Paused");
16+
}
17+
18+
@Override
19+
public void seek() {
20+
System.out.println("MultiMediaPlayer is being seeked");
21+
}
22+
23+
@Override
24+
public void fastForward() {
25+
System.out.println("MultiMediaPlayer is being fast forwarded");
26+
}
27+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package com.baeldung.implementsvsextends.media.player.impl;
2+
3+
import com.baeldung.implementsvsextends.media.player.MediaPlayer;
4+
5+
public class VideoMediaPlayer implements MediaPlayer {
6+
7+
@Override
8+
public void play() {
9+
System.out.println("VideoMediaPlayer is Playing");
10+
}
11+
12+
@Override
13+
public void pause() {
14+
System.out.println("VideoMediaPlayer is Paused");
15+
}
16+
}

0 commit comments

Comments
 (0)