목록언어 (31)
개발자는 기록이 답이다
오버로딩과 오버라이딩은 Java에서 다형성을 구현하는 두 가지 주요 메커니즘이다. 위치 시그니처 반환 타입 오버라이딩 상속 관계에서 부모 클래스의 메소드를 자식 클래스에서 재정의 메소드 이름과 매개변수의 타입 및 개수가 일치해야 함 반환 타입까지 동일해야 함 오버로딩 같은 클래스 내에서 발생 메소드 이름이 같고, 매개변수의 타입 또는 개수가 달라야 함 반환 타입이 달라도 됨 오버라이딩 : 상속 관계에서 부모클래스에서 선언된 메소드를 하위클래스에서 가져와 구현할때 사용 class Animal { void makeSound() { System.out.println("동물 소리"); } } class Dog extends Animal { @Override void makeSound() { System.out...

Effective Java를 공부하다보면 아래와 같은 파트가 있다. equals와 hashCode에 대해 디테일하게 알아보는 시간을 갖고자한다. 'equals는 일반 규약을 지켜 재정의하라' 'equals를 재정의하려거든 hashCode()도 재정의하라' equals와 hashcode 메소드에 대해 알아보자 equals와 hashCode는 모든 Java 객체의 부모 객체인 Object 클래스에 정의되어 있다. 그렇기 때문에 Java의 모든 객체는 Object 클래스에 정의된 equals와 hashCode 함수를 상속받고 있다. 따라서, 클래스에서 이 메소드들을 사용하거나 오버라이드하여 재정의할 수 있다. 🚩 equals란 ? 2개의 객체가 동일한지 검사하기 위해 사용된다. 2개의 객체가 가리키는 곳이 동..

1. 동기화 메소드와 동기화 블록 공유 객체를 사용할 때의 주의할 점 싱글 스레드 프로그램에서는 한 개의 스레드가 객체를 독차지해서 사용하면 되지만, 멀티 스레드 프로그램에서는 스레드들이 객체를 공유해서 작업해야 하는 경우가 있다. 이 경우, 스레드 A를 사용하던 객체가 스레드 B에 의해 상태가 변경될 수 있기 때문에 스레드 A가 의도했던 것과는 다른 결과를 산출할 수도 있다. 이는 마치 여러 사람이 계산기를 함께 나눠 쓰는 상황과 같아서 사람 A가 계산기로 작업을 하다가 계산 결과를 메모리에 저장한 뒤 잠시 자리를 비웠을 때 사람 B가 계산기를 만져서 앞 사람이 메모리에 저장한 값을 다른 값으로 변경하는 것과 같다. 그런 다음 사람 A가 돌아와 계산기에 저장된 값을 이용해서 작업을 진행한다면 결국 사람..

1. 멀티스레드 개념 프로세스와 스레드 운영체제에서는 실행중인 하나의 애플리케이션을 프로세스라고 부른다. 사용자가 애플리케이션을 실행하면 운영체제로부터 실행에 필요한 메모리를 할당받아 애플리케이션의 코드를 실행하는데 이것이 프로세스다. 하나의 애플리케이션은 다중 프로세스를 만들기도 하는데, 예를 들어 Chrome브라우저를 2개 실행했다면 2개의 Chrome프로세스가 생성된 것이다. 멀티태스킹은 2가지 이상의 작업을 동시에 처리하는 것을 말하는데, 운영체제는 멀티 태스킹을 할 수 있도록 CPU 및 메모리 자원을 프로세스마다 적절히 할당해주고, 병렬로 실행시킨다. 예를 들어 워드로 문서 작업을 하면서 동시에 윈도우 미디어 플레이러로 음악을 들을 수 있다. 멀티 태스킹은 꼭 멀티 프로세스를 뜻하지는 않는다. ..