JAVA
-
[JAVA] IS-A 관계, HAS-A 관계JAVA 2020. 6. 30. 21:00
IS-A 관계, HAS-A 관계 안녕하세요? 장장스입니다. IS-A 관계, HAS-A 관계에 대해 알아보겠습니다. 객체지향 프로그래밍에서 우리는 상속을 사용합니다. 언제 상속을 사용해야 할까요? IS-A 관계 상속은 IS-A관계에서 사용하는 것이 가장 효율적입니다. IS-A 관계(is a relationship, inheritance)는 일반적인 개념과 구체적인 개념의 관계입니다. 사람은 동물이다. 소는 동물이다 새는 동물이다. 위와 같은 관계입니다. 즉, 일반 클래스를 구체화 하는 상황에서 상속을 사용합니다. 상속을 사용하면 많은 장점이 있지만, 하위 클래스가 상위 클래스에 종속되기 때문에 이질적인 클래스 간에는 상속을 사용하지 않는 것이 좋습니다. 단순히 코드를 재사용할 목적으로 서로 관련이 없는 개..
-
[JAVA] 메서드 오버라이딩JAVA 2020. 6. 27. 19:43
메서드 오버라이딩 안녕하세요? 장장스입니다. 상위 클래스 메서드를 재정의 메서드 오버라이딩은 하위클래스에서 상속받은 상위 클래스의 메서드를 재정의 하는 기능을 말합니다. 아래는 Cutomer 클래스입니다. 물건을 구매하는 Buy 메서드가 정의되어 있습니다. public class Customer { protected int id; protected String name; public void showCustomer() { System.out.println("아이디 "+id+"의 고객이름은 "+ name+"입니다."); } public int Buy(int price) { return price; } } 다음과 같이 Cutomer 클래스를 상속받은 VIPCustomer 클래스를 생성했습니다. 그런데 VIP..
-
[JAVA] 상속에서 클래스 생성과 superJAVA 2020. 6. 23. 23:47
상속에서 클래스 생성과 super 안녕하세요? 장장스입니다. 오늘은 객체지향 프로그래밍의 중요한 특징 중 하나인 상속(inheritance)에 대해 포스팅 해보겠습니다. 클래스의 상속 B 클래스가 A 클래스에게 상속받는다고 하면 다음과 같이 나타낼 수 있습니다. 클래스 간 상속을 표현할 때 하위 클래스가 상위 클래스를 바라본다는 느낌으로 화살표가 하위클래스에서 상위 클래스로 표시됩니다. 상위 클래스는 부모 클래스, 하위 클래스는 자식 클래스 라고도 불립니다. 자바에서 상속은 extends 예약어를 사용합니다. class B extends A{ } 하위 클래스가 생성되는 과정 그렇다면 하위 클래스는 어떻게 상위 클래스를 상속을 받을까요. 우리는 상속을 받는 하위 클래스가 생성되는 과정을 살펴 볼 필요가 있..
-
[JAVA] 자바, ArrayListJAVA 2020. 6. 22. 07:07
자바, ArrayList 안녕하세요? 장장스입니다. 오늘은 배열 친구 ArrayList 클래스에 대해 포스팅하겠습니다. 기존 배열의 단점 기존에 배운 기본 배열은 프로그램에서 사용하려면 항상 배열 길이를 정하고 시작해야만 했습니다. 그런데 배열의 길이를 변경해야만 하는 상황이 왔을 때 고정된 배열의 길이 때문에 코드를 수정해야만 하는 번거로운 일이 생깁니다. 합니다. ArrayList 클래스의 주요 메서드 ArrayList 클래스에는 필요한 메서드들이 이미 많이 만들어져 있습니다! 대표적인 메서드들입니다. 메서드 설명 boolean add(E e) 요소 하나를 배열에 추가합니다. E는 요소의 자료형을 의미합니다. int size() 배열에 추가된 요소 전체 개수를 반환합니다. E get(int index..
-
[JAVA] 자바, 배열 복사JAVA 2020. 6. 22. 00:06
자바, 배열 복사 안녕하세요? 장장스입니다. 오늘은 간단한 배열 복사 방법 2가지에 대해 포스팅하겠습니다. for 문을 이용한 복사 첫번째는 for문 사용입니다. for 문을 사용해서 복사하는 간단하고 쉬운 방법입니다. public class ForArrayCopy { public static void main(String[] args) { String[] arr1 = {"사과","딸기","배","포도","수박"}; String[] arr2 = new String[5]; for (int i = 0; i < arr1.length; i++) { arr2[i] = arr1[i]; } for (int i = 0; i < arr2.length; i++) { System.out.print(arr2[i]+" "); ..
-
[JAVA] 자바, 메모리 구조 스택(stack), 힙(heap), 데이터(data)JAVA 2020. 6. 21. 13:51
자바, 메모리 구조 스택(stack), 힙(heap), 데이터(data) 스택(stack) 영역 메모리의 스택(stack) 영역은 함수의 호출과 관계되는 지역 변수와 매개변수가 저장되는 영역입니다. 스택 영역은 함수의 호출과 함께 할당되며, 함수의 호출이 완료되면 소멸합니다. 이렇게 스택 영역에 저장되는 함수의 호출 정보를 스택 프레임(stack frame)이라고 합니다. 스택 영역은 푸시(push) 동작으로 데이터를 저장하고, 팝(pop) 동작으로 데이터를 인출합니다. 이러한 스택은 후입선출(LIFO, Last-In First-Out) 방식에 따라 동작하므로, 가장 늦게 저장된 데이터가 가장 먼저 인출됩니다. 스택 영역은 메모리의 높은 주소에서 낮은 주소의 방향으로 할당됩니다. 힙(heap)영역 메모리..
-
[JAVA] 자바, 정보 은닉JAVA 2020. 6. 20. 14:29
정보 은닉 안녕하세요? 장장스입니다. 오늘은 정보 은닉에 대해서 포스팅 하겠습니다. 객체지향의 특징이라고 할 수 있는 정보 은닉에 대해 알아보기 전에 캡슐화와 접근제어자에 대해 간단하게 알아 보겠습니다. 캡슐화란? 캡슐화(encapsulation)는 객체 지향 프로그래밍에서 다음 2가지 측면이 있습니다. 객체의 속성(data fields)과 행위(메서드, methods)를 하나로 묶는다. 실제 구현 내용 일부를 외부에 감추어 은닉한다. 접근 제어자란? 객체 지향 프로그램에서는 예약어를 사용해 클래스 내부의 변수나 메서드, 생성자에 대한 접근 권한을 지정할 수 있습니다. 이러한 예약어를 '접근 제어자(access modifier)'라고 합니다. public 외부 클래스 어디에서나 접근이 가능합니다. pro..
-
[자바] 문자열(String)비교 == 와 equals 차이점JAVA 2020. 3. 22. 21:10
== 와 equals() 차이점 안녕하세요? 장장스입니다. 스프링하다가 문자열 비교가 안되서 곤욕을 치뤘는데(시간낭비 엄청했음).. 잊어버리지 않게 이유를 짧막하게나마 정리하려고 합니다. == == 는 비교 연산자입니다. 숫자나 문자를 비교할 수 있습니다. int num = 10; num == 10; // true 하지만 문자열은 비교할 수 없습니다. String text = "장장스입니다"; text == "장장스입니다";//false equals() 자바에서 문자열은 엄밀하게 말하면 객체입니다. Object 객체를 상속받아 만든 String 객체인 것이지요. 때문에 == 비교연산자를 사용하게 되면 객체의 주소를 비교하게 되는 것입니다. 따라서 문자열을 비교할 때는 equals() 메서드를 사용해야 합..