class sex 있고
class Analsex : sex 있으면
객체 만들 때
1. sex Powersex = new Analsex();
2. Analsex Powersex = new Analsex();
무슨차이임?????
1.처럼 생성할 수도 있음????
2번이 정석 아님??
애초에
(1)classA (2)A = new (3)classA();
1번 2번 3번을 어떻게 해석해야함???
2번이 객체이름이고 3번이 클래스이름이면 1번은 뭐임???
sex Powersex = new Analsex();는 어떻게 되나요 파생클래스만 이렇게 할 수 있는건가여
변수명 참 입에 담기 뭐하다...
당장 생각나는게 없어서요...
어쨌던 간에 Parent 클래스가 있고 이를 상속한 Child 클래스가 있고 Child 클래스를 인스턴스화시켜서 쓰려고 하는데 얘의 자료형을 Parent로 잡아야 되는지, Child 로 잡아야 되는지를 묻는거잖아
이거는 객체지향 원칙이 담고있는 내용 일부에 해당하는 이야긴데 개인적으로 좋은 질문이라고 생각한다.
자식클래스 객첸데 부모클래스에서 참조한다는 뜻인가요
일단 문법적으로는 1, 2번 둘다 문제 없음. 근데 다를 수도 있는 경우는 Child 클래스에서 추가적으로 달려있는 함수가 있는 경우에 달라지는 거고.
아니야 부모클래스에서 참조하고 그런거 아님
예를 들어서 너네 아버지가 "김카카"라고 가정하자
그럼 동네 아저씨들은 너 이름이 "김카뮈
동네 아저씨들은 너 이름이 "김카뮈"인걸 알 필요는 없는 거잖아. 그냥 "김카카" 아들 이라고 알고 있어도 상관없잖아. 그런 경우에는 그냥 Parent 클래스 타입으로 잡음
반대로 너 친구들은 너를 "김카뮈"라고 부를꺼고... 비유가 좀 이상하긴 하다 하고나니
아하 글쿤 알듯말듯하네요 감사요 허허
자바같은 경우는 ArrayList, LinkedList 등의 클래스들이 있고 이것들은 전부 List 인터페이스를 상속받고 있음. 그럼 당연히 List 인터페이스에 있는 함수들이 전부 구현되어 있겠지.
근데 사용하는 코드 입장에서 얘가 ArrayList 인지 LinkedList 인지 알 필요가 없을 때는 List list = new ArrayList(); 같은 식으로 씀. 그래야 혹여라도 나중에 자식클래스를 변경할때도 편함
근데 꼭 자식클래스 명을 알아야 하는 경우가 있음. 예를 들어서 List 인터페이스에는 없는 함수인데 LinkedList 클래스에는 추가적으로 함수가 있는 경우. 아마 자바 기준으로 LinkedList 에서 queue 구조를 지원하면서 push pop 같은게 있었던 걸로 기억하는데 뭐 그런 케이스에는 LinkedList list = new LinkedList(); 같은 식으로 선언함
클린 코드를 쓰기 위해서 필요한 습관 중에 하나가 어떤 바운더리 바깥으로 필요 이상의 정보를 주지 않도록 주의하는 것임
어렵네요 일단 문법책 한번 다 돌리고 또 보면서 이해해야겠음
복잡하면 그냥 1, 2 모두 문법상 문제는 없되 일반적으로 부모 클래스/인터페이스로 선언하는 경향이 있다 정도로만 알고 있으면 될듯
그냥 객체를 무슨 타입으로 두냐의 차이임 1번은 암시적으로 업캐스팅 하는거
고양아형님 감사합니다