멍하
돌아온 자바공부 5일차입니다.
18강 추상
https://youtu.be/W683VoXgan4?si=eCifQoxTKoJscziS
추상(abstract) : 다른 클래스는 추상 클래스를 상속받아 사용한다. // 다른 클래스(사용하는 클래스)에서 모든 메소드를 클래스에서 생성하면 무슨 메소드가 있는지 구별하기 어렵기 때문에 어떤 기능이 필요할지 생각하여 추상 클래스에 메소드를 만들어놓고 각각의 다른 클래스에서 내용을 만들어서 사용?
+ 메소드 : 클래스 안에 있는 함수를 메소드라고 부름!
새로운 Animal 클래스를 생성하고 상속클래스로 변경해줌
abstract class 클래스명 { }
//Player.java
abstract class Player {
abstract void play(String songName);
abstract void pause();
abstract void stop();
}
main class에서 Player 클래스를 상속 받기 위해 extends를 해줌
public class Main extends Player { }
Player를 상속받으면 x표시가 뜨는데 메소드를 받아옴
생성된 메소드를 사용하기 위해서 main 메소드에서 main 형으로 main을 선언하여 메소드를 사용
//main.java
public class Main extends Player {
public static void main(String[] args) {
Main main = new Main(); //main 변수 선언
main.play("sekaoka");
main.pause();
main.stop();
}
@Override //추상클래스에서 받아온 메소드라는 의미?
void play(String songName) {
// TODO Auto-generated method stub
System.out.println(songName + " 곡을 재생합니다.");
}
@Override
void pause() {
// TODO Auto-generated method stub
System.out.println("곡을 일시정지합니다.");
}
@Override
void stop() {
// TODO Auto-generated method stub
System.out.println("곡을 정지합니다.");
}
}
Animal 클래스를 추상클래스로 생성한 후 crying 메소드를 넣어줌
//Animal.java
abstract class Animal {
abstract void crying();
}
Dog 클래스에서 Animal 클래스를 상속받아 crying 메소드를 만들어줌
//Dog.java
public class Dog extends Animal{
@Override
void crying() {
// TODO Auto-generated method stub
System.out.println("멍멍");
}
}
Cat 클래스에서도 Animal 클래스를 상속받아 crying 메소드를 만들어줌
//Cat.java
public class Cat extends Animal{
@Override
void crying() {
// TODO Auto-generated method stub
System.out.println("야옹");
}
}
main 클래스에서 dog과 cat을 선언하여 메소드를 사용함
//main.java
public class Main {
public static void main(String[] args) {
Dog dog = new Dog();
Cat cat = new Cat();
dog.crying();
cat.crying();
}
}
상속 받아서 어떤 메소드가 필요한지 알 수 있지만 그걸 좀 더 자유롭게 사용할 클래스의 내용에 맞게 만들어주는걸까?
'JAVA' 카테고리의 다른 글
[JAVA] 다형성(polymorphism) (0) | 2023.09.18 |
---|---|
[JAVA] final 키워드 | 인터페이스(interface) (0) | 2023.09.15 |
[JAVA] 배열, 다차원 배열, 클래스, 상속 (0) | 2023.09.14 |
[JAVA] 생성자 (Constructor) (0) | 2023.09.14 |
[JAVA] 사용자 정의 함수, 반복 함수, 재귀 함수 (1) | 2023.09.14 |