JAVA
-
[JAVA] 다형성, 상속 관계JAVA 2021. 5. 5. 15:01
위 글은 패스트캠퍼스 강의를 바탕으로 쓰여졌습니다. 다형성(polymorphism)이란? 하나의 코드가 여러 자료형으로 구현되어 실행되는 것 같은 코드에서 여러 다른 실행 결과가 나옴 정보은닉, 상속과 더불어 객체지향 프로그래밍의 가장 큰 특징 중 하나 다형성을 잘 활용하면 유연하고 확장성있고, 유지보수가 편리한 프로그램을 만들 수 있다. IS-A 관계 (is a relationship : inheritance) 일반적인 개념과 구체적인 개념과의 관계 상위 클래스: 하위 클래스보다 일반적인 개념( 예: Employee) 하위 클래스: 상위 클래스보다 구체적인 개념들이 더해짐( 예: Engineer, Manager) 상속은 클래스간의 결합도가 높은 설계 상위 클래스의 수정이 많은 하위 클래스에 영향을 미칠..
-
[JAVA] 매서드 재정의와 가상 메서드 원리JAVA 2021. 5. 4. 15:09
위 포스팅은 패스트캠퍼스의 강의를 듣고 작성하였습니다. 메서드는 어떻게 호출되고 실행 되는가? 메서드(함수)의 이름은 주소값을 나타낸다. 메서드는 명령어의 set이고 프로그램이 로드되면 메서드 영역(코드 영역)에 명령어 set이 위치 해당 메서드가 호출 되면 명령어 set이 있는 주소를 찾아 명령어가 실행이 된다. 이때 메서드에서 사용하는 변수들은 스택 메모리에 위치하게 된다. 따라서 다른 인스턴스라도 같은 메서드의 코드는 같으므로 같은 메서드가 호출됨 인스턴스가 생성되면 변수는 힙 메모리에 따로 생성되지만, 메서드 명령어 set은 처음 한번 로드 된다. 가상 메서드 원리 가상 메서드 테이블(vitual method table)에서 해당 메서드에 대한 address를 가지고 있음 재정의된 경우는 재정의 ..
-
[JAVA] 배열JAVA 2021. 5. 3. 22:17
위 포스팅은 패스트캠퍼스 강의를 바탕으로 작성했습니다. 배열이란? 동일한 자료형의 순차적인 자료 구조 인덱스 연산자[]를 이용하여 빠른 참조가 가능 물리적 위치와 논리적 위치가 동일 배열의 순서는 0부터 시작 자바에서는 객체 배열을 구현한 ArrayList를 많이 활용 int[] arr1 = new int[10]; int arr2[] = new int[10]; 위 2가지 경우가 모두 배열의 길이가 10인 것을 만드는 코드입니다. 두 가지가 모두 쓰여져도 되지만, 전자가 배열의 형태를 알 수 있어 선호하는 스타일이라고 합니다. 객체 배열 선언과 구현 기본 자료형 배열은 선언과 동시에 배열의 크기만큼의 메모리가 할당 되지만, 객체 배열의 경우엔 요소가 되는 객체의 주소가 들어갈(4바이트, 8바이트) 메모리만..
-
[JAVA] static 응용 - 싱글톤 패턴(singleton pattern)JAVA 2021. 5. 3. 15:21
위 포스팅은 패스트캠퍼스 강의를 바탕으로 작성하였습니다. 프로그래밍을 하다보면 여러개의 인스턴스를 생성했을 때, 문제가 되는 경우가 있습니다! 대부분 하나의 클래스에 여러개의 인스턴스인 경우가 많습니다 예를들어 , 많은 학생들, 주문들 회사에서 사원은 여러명일 수 있지만, 회사라는 객체는 하나이어야만 합니다. 이런 경우 싱글톤 패턴을 사용합니다! 코드를 보면서 더 설명을 하겠습니다 ! 위와 같이 Comapny 라는 클래스를 만든다면, defualt생성자를 갖게 되고, 외부에서 Company를 건들 수 있습니다. 따라서 Company 생성자를 private으로 제공을 합시다! Company를 하나만 만들것이니 static 을 붙여주고, instance를 반환하는 getInstance() 메소드를 만들어 줍..
-
[JAVA] STATIC 변수JAVA 2021. 5. 3. 14:52
이 포스팅은 패스트캠퍼스의 강의를 바탕으로 씌여졌습니다. 생성자는 다르지만, serialNum은 같은것을 알 수 있습니다. 지역변수들은 스택메모리에 생성되고, 생성자들은 힙메모리에 저장됩니다! 실습으로 들어가서!! 회사원이 입사할때마다 새로운 사번을 부여하는 코드를 작성해봅시다 어떻게 해야하는지 생각을 해봅시다. 객체가 초기화될때 초기화 작업은 생성자에서 합니다. 따라서 serialNum++ 을 만들고, 그것을 멤버변수 employeeId 에 저장합니다. 이렇게 작성하면 각자 다른 사번을 갖게 됩니다. static 변수는 프로그램이 메모리에 있는 동안 계속 그 영역을 차지하므로,너무 큰 메모리를 할당하는 것은 좋지 않다. 클래스 내부의 여러 메서드에서 사용하는 변수는 멤버 변수로 선언하는 것이 좋다. 멤..
-
[JAVA] 객체 지향 프로그래밍에서의 협력JAVA 2021. 5. 1. 00:09
위 포스팅은 패스트캠퍼스의 강의를 바탕으로 포스팅하였습니다. 객체 지향 프로그램에서 객체 간에는 협력이 이루어진다. 협력을 위해서는 필요한 메세지를 전송하고 이를 처리하는 기능이 구현되어야 한다 매개 변수로 객체가 전달되는 경우 발생 객체 협력의 예 간이 프로젝트 MISSION😲😲😲 버스타고 학교가는 학생의 과정을 객체지향 프로그래밍으로 구현해봅시다! James와 Tomas는 각각 버스와 지하철을 타고 학교에 갑니다. James는 5000원을 가지고 있었고, 100번 버스를 타면서 1000원을 지불합니다. Tomas는 10000원을 가지고 있었고, 초록색 지하철을 타면서 1200원을 지불합니다. 두 학생이 버스와 지하철을 타는 상황을 구현해 봅시다. Student 클래스를 만들었습니다. 위 클래스에는 2..
-
[JAVA] INTERFACEJAVA 2021. 4. 27. 13:37
이 포스팅은 [생활코딩]님의 INTERFACE 강의안 및 하신 말씀을 글로 적은 것입니다. 추가적인 설명이나 정확한 개념은 강의를 통해 알아가면 더 좋을 것 같습니다. www.youtube.com/watch?v=Pvjss79v_qw 어떤 객체가 있고 그 객체가 특정한 인터페이스를 사용한다면, 그 객체는 반드시 인터페이스의 메소드들을 구현해야 한다. 만약 인터페이스에서 강제하고 있는 메소드를 구현하지 않으면 이 애플리케이션은 컴파일조차 되지 않는다. interface I { public void z(); } class A implements I { public void z(){} } 클래스 A뒤의 implements I 는 이 클래스가 인터페이스 I를 구현하고 있다는 의미이다. 즉, 1행의 interfac..