My footsteps
추상클래스 본문
728x90
abstract class Plyer{ //추상클래스 Plyer(=미완성 설계도)
abstract void play(int pos); //매개변수 有
abstract void stop(); //매개변수 無
//play,stop는 추상매서드라서 구현부 { } 가 없어도 됨
}
class AudioPlyer extends Plyer{ //추상클래스 Plyer는 반드시, 자손과 상속관계로 묶여야만 작동시킬수 있다.
void play(int pos) {System.out.println(pos+"부터 재생합니다.");}
void stop() {System.out.println("멈춤");}
}
class Ex7_9 {
public static void main(String args[]) {
// AudioPlyer ap = new AudioPlyer();
// ap.play(50);
// ap.stop();
//1. 정상클래스인 AudioPlyer로 객체를 만들어서 그 안에 있는 추상매서드 play,stop을 작동시키는 방법
Plyer ap = new AudioPlyer();
ap.play(50);
ap.stop();
//2. 추상클래스 Plyer는 정상클래스 AudioPlyer로 인해 설계도가 만들어졌기 때문에 객체 생성도 가능하다.(=다형성)
//Plyer ap는 그저 객체를 작동하기 위한 리모컨이다. 리모컨하고 연결된 값을 다 갖고 있는(부모 Plyer의 값까지 다 갖고있는 AudioPlyer)
//정상적인 객체가 때문에 리모컨 이름을 바꿔도 오류가 나지 않는것임.
}
}
abstract class Unit{ //추상클래스
int x,y;
abstract void move(int x,int y); //추상매서드
void stop() {} //정상매서드
}
class Marine extends Unit{
void move(int x,int y) {
System.out.println("마린의 x좌표: "+x+" y좌표: "+y);
}
void stimPack() {}
}
class Tank extends Unit{
void move(int x,int y) {
System.out.println("탱크의 x좌표: "+x+" y좌표: "+y);
}
void changeMode() {}
}
class Dropship extends Unit{
void move(int x,int y) {
System.out.println("선박의 x좌표: "+x+" y좌표: "+y);
}
void load() {}
void unload() {}
}
public class Chooo {
public static void main(String[] args) {
Unit[] group = {new Marine(),new Tank(),new Dropship()}; //Unit타입인 세객체를 한줄로 정리하는법.왼쪽부터 0,1,2부여
for(int i=0; i < group.length; i++) //여기서i는 group[0] 괄호안 숫자를 의미
group[1].move(100, 200);
}
}
abstract class Kim{
int x,y;
abstract void player1(int r, int u);
}
class Marine2 extends Kim{
void player1(int r, int u) {
System.out.println("x의값은?"+r+" y의 값은?"+u);
};//부모의 매서드를 꼭 공통으로 다 받아야만 하는듯?
void player2() {} //매개변수가 없는건..반환못혀
}
class Tank2 extends Kim{
int t;
void player1(int r, int u) {};
void player3(int x,int y) {}
}
public class Coffee {
public static void main(String[] args) {
Kim[] k = {new Marine2(), new Tank2()};
for(int i=0; i < k.length; i++) {
k[0].player1(10, 20);
//k[]괄호 안에 어떤게 연결되어있는지 그림그리면서 파악하기!!
}
}
}
///★★★★★★★★★★★★★이거 티스토리에 올려라!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!/////
내가 보려고 정리해놓는 추상클래스 작성방법
1. 부모뻘 추상클래스를 만든다(밑에 매서드들도 추상매서드가 됨) + abstract 생략 불가능
2. 부모에게 상속받는 자식 클래스들을 만든다
3. main매서드로 넘어가서
4. 객체를 만들어줌
5. 만들어준 객체에 자식클래스 갯수만큼 자식클래스 객체를 만들어서 대입(=)시켜준다
5. 반복문을통해...반환 (그때그때 상황에 맞게)
추상클래스를 만든는 이유는?
공통된건 묶고 해서 유지보수를 쉽게 하려고.
가라로 설계도 틀만 만들어놓는다고 생각하면 쉽다. 유동성있게 그에 맞는 필요한 값을 넣고 반환하는
+참고
https://cloudstudying.kr/questions/49
자바 입문 void 타입에 관하여 | CloudStudying
# void 타입 메소드는 값을 반환하지 않습니다. void 타입 메소드에 return 키워드가 사용되었다면, 이는 값을 반환 하는 것이 아니라 메소드를 종료 하는 것입니다. ## void 메소드에서 return을 사용한
cloudstudying.kr
728x90
'예습 > code' 카테고리의 다른 글
인터페이스 사용 이유 (0) | 2023.01.14 |
---|---|
인터페이스의 다형성 (0) | 2023.01.14 |
여러 종류의 객체를 배열로 다루기 (0) | 2023.01.13 |
매개변수 다형성 (0) | 2023.01.13 |
참조변수 형변환 (0) | 2023.01.13 |