이번엔 자바 질문입니다.

이창준   
   조회 3868   추천 0    




자바 프로그램 공부를 하면서 실습으로 공구 관리 프로그램을 만들고 있습니다.

아주 기본적인 정보을 담은 클래스(변수 갯수가 10개 정도됩니다.) 를 시작으로 상속을 하고 있습니다.

족보로 치면 대략 10대 정도됩니다. 1대 부터 10대 후손까지..1대가 거칠 때마다 대략 2-3개의 변수가 추가 되는 형태입니다.

코드 작성 중 1대에서 3대 까지는 참으면서 생성자를 넣고 있습니다. 허나 더 할 자신이 없습니다.ㅜㅜ

대략 코드의 형태는

class AAA
{
int a;
int b;
int c;
int d;

public AAA(int a, int b, int c, int d)
{
this.a=a;
.
.
.
}
}

class BBB extends AAA
{
int e;
int f;
public BBB(int a, int b, int c, int d, int e, int f)
{
super(a,b,c,d);
this.e=e;
this.f=f;

}
}

위의 생성자의 파랑색 글씨가 대를 거듭할수록 갯수가 너무 많아져서 넣는게 부담스러워지고 있습니다. 차후 트러블 슈팅할 자신이 없습니다. 자손 클래스에서 생략할 방법이 있는지요? 오버로딩에 의해 초기화해야 하기에 반드시 있어야 할것 같긴한데, 뭔가 스마트한 방법이 있을 듯합니다.
짧은글 일수록 신중하게.
좀이상합니다...

위의경우 같은 상황에서는 init() 같은 함수를 쓸것 같네요... 그리고 만약 위에서 하려고 하는 일을 하려면 아무리 부담스러워도 부담스러운 일을 해야(?) 할것 같아요...  그리고 변수를 하나하나씩 저렇게 파라미터로 넣지 않고 부모클레스 통째로 하는게 더 관리하기 쉽겠습니다...

class BBB extends AAA
{
int e;
int f;
public BBB(AAA aaa, int e, int f)
{
super(aaa);
this.e=e;
this.f=f;

}
}

뭐 이런식?

아니면 여러가지 방식이 있을수 있습니다만 파라미터에 넣는 변수들을 변수클래스로 만들어서 묶던지요... 이것을 푸는 방법은 무지하게 많을 수 있는데요... Map 클레스 오브젝트를 쓰면 거기에다가 파라미터를 다 넣어서 패스하면 되겠죠...
이창준 2015-03
답변 감사드립니다. 가장 LTE급의 우리 2CPU입니다.
아직 초보적인 자바수준이라 말씀하시는 내용을 완전히 이해하기가 어렵네요. 최상위 클래스에서 변수를 선언할 때 사용될 변수를 모두 알고 있으면, 쉽게 해결이 가능할 듯한데, 미지의 변수가 계속 늘어나고 있어 최상위 클래스에서 선언을 못하고 있네요.
     
클래스를 디자인할때 디폴트값을 지정해주는 방식 또는 상위클래스의 콘스트럭터에서 아님 init () 함수를 상위서부터 쫘악 물려주는거죠...
OOP 대물림의 목적과 가상함수 그리고 자바에서는 빌더클래스를 이해하시면 뼈대가 잡힌다고해야하나요...
자바가 이제서야 빛을 볼수있는것 같아요... 초기에는 콘쎕은 무지좋은데... 하드웨어 등등 퍼포먼스가 너무 딸려서... 버벅임을 피할수가 없었거든요... 요즘엔 자바어플리케이션이 티도안나게 돌아가는 세상이 되어서... 그리고 어짜피 윈도우에서도 닷넷프레임워크라는 비슷한 콘쎕을 쓰고 있고...
          
이창준 2015-03
위의
public BBB(AAA aaa, int e, int f)
{
super(aaa);
this.e=e;
this.f=f;
}
중 AAA.aaa가 AAA클래스의 생성자를 말씀하시는지요?
               
파람을 말씀하시는건가요? 아님?
                    
이창준 2015-03
생성자 BBB의 괄호속 AAA.aaa가 무엇인지 궁금합니다.
대분자 AAA는 상위 클래스일텐데 소문자 aaa가 무엇인지요?
생성자와 클래스의 이름이 같아야 하는데...

예로 주신 내용을 보고 어쩌면...쉬워질것 같은데..라는 생각으로 해 보았는데 생성자는 super로 밖에 호출이 안되나 봅니다.
                         
AAA aaa 입니다
AAA - 클래스이름
aaa - 파라미터이름
무아 2015-03
자바는 안해봐서 모르겠네요.
c++ 이나 c# 으로 본다면 그냥 protected 로 변수들을 선언해서 상속해주면 되지 않나요?
생성자야 입맛에 맛게 여러가지 만들어주면 되고..
그리고 함수 입력 파라미터 갯수가 점점 길어지는 것이 걱정이 된다면
아예 있을 수 있는 파라미터를 모두 모은 클래스를 하나 정의해서 그 클래스를 입력 파라미터로 넣어주는 것도..
공돌이 2015-03
사실 의도하시는바는 정확히 모르겠네요.
단순히 상속받기위해
public BBB(int a, int b, int c, int d, int e, int f) 메소드를 기술하신건가요?
아래 코드로 해결이 되시려나요?


public class Parent{

int a;
int b;
int c;
int d;
int e;
int f;
public int getA() {
return a;
}
public void setA(int a) {
this.a = a;
}
.
.
.
}


public class Child extends Parent{

public Child(){
setA(1);
setB(2);
setC(3);
System.out.println(getA());
System.out.println(getB());
System.out.println(getC());
}
}


QnA
제목Page 2890/5729
2015-12   1789330   백메가
2014-05   5264355   정은준1
2018-10   4348   미수맨
2011-10   6169   아름다운노을
2014-02   4575   조재형3
2022-10   2818   강아지씨
2016-07   6482   불꽃막대
2024-06   2373   라혼
2019-12   3012   캡틴아메리카노
2019-12   3594   김영기
2015-06   4260   김건우
2021-03   1961   yeond
2018-10   3337   임시현
2011-12   6266   이정근
2024-06   2463   정무현
2019-12   2325   삐돌이슬픔이
2015-06   6380   푸른하늘아래
2016-08   4463   김건우
2024-07   1328   어훕
2012-01   8577   박상범
2016-08   6175   룰루랄라
2014-03   11813   미수맨