Java Checked Excpetion, UnChecked Exception
·
Language/Java
자바에서 예외는 전체적으로 Error와 Exception으로 나뉘게 됩니다. Error란 시스템 레벨에서 발생하는 심각한 수준의 오류를 뜻하며, 개발자가 미리 예측할 수 없는 오류입니다. Exception이란 로직 상에서 발생하는 오류로, 개발자가 구현한 코드에서 발생하여 예외를 예측할 수 있으며 미리 예방할 수 있습니다. 이러한 예외 클래스들은 최상위 클래스인 Object를 상속받은 Throwable이라는 클래스를 기반으로 Error와 Exception클래스로 나뉘며, 이때 Exception클래스는 RuntimeException 상속 여부에 따라 CheckedException과 UncheckedException으로 나뉘게 됩니다. RuntimeException의 상속 여부에 따라 CheckedExcep..
자바 - 동일성과 동등성(equals, == )
·
Language/Java
동등성은 실제 인스턴스가 같음을 의미하며, 참조하는 값을 비교하는 == 비교의 값과 같습니다. 동일성은 인스턴스가 가지고 있는 값이 같은 것을 의미하며 동등성 비교는 equals메소드를 통해 구현해야합니다. * == 연산자 : 두 객체가 같은지 검사합니다. - 피 연산자가 원시타입인 경우(int, double, boolean, ...) : 값이 같은지 비교합니다. - 피 연산자가 참조타입인 경우(Integer, Double) : 객체의 주소가 같은지 비교합니다. * (override된) equals() 연산자 : 내용이 같은지 검사합니다. - 피 연산자가 원시타입인 경우 : 내용이 같은지 비교합니다. - 피 연산자가 참조타입인 경우 : 객체의 주소가 같은지 비교합니다. public boolean equa..
SOLID 원칙
·
Language/Java
다음은 객체지향적으로 설계할 때 참고해야 할 5대 원칙입니다. 1. 단일 책임 원칙 (SRP) 모든 클래스는 각각 하나의 책임만 져야 합니다. 클래스는 그 책임을 완전히 캡슐화해야함을 의미합니다. ex ) 특정한 기능을 수행할 목적으로 있는 클래스가 있다면 해당 기능만을 책임져야하고 이를 수정한다고 한다면 그 이유는 해당 기능과 관련되어서만 수정되어야 함 2. 개방-폐쇄 원칙(OCP) - 확장에는 열려있고 수정에는 닫혀있어야 합니다. 기존 코드를 변경하지 않으면서 기능을 추가할 수 있도록 해야합니다. ex ) 캐릭터의 수정은 필요 없고 움직임의 패턴만 재정의하면 됩니다. 3. 리스코프 치환 법칙(LSP) - 자식 클래스는 언제든 부모 클래스를 대체할 수 있어야 한다는 원칙입니다. 4. 인터페이스 분리 원..
접근 제어자의 종류
·
Language/Java
접근 제어자는 멤버 또는 클래스에 사용되어 해당하는 멤버 또는 클래스를 외부에서 접근하지 못하도록 제한하는 역할을 수행합니다. 접근제어자는 생략이 가능하며 생략했을 때는 자동으로 default임을 뜻하게 됩니다. 따라서 default일 경우 접근 제어자를 지정하지 않습니다. 제어자 같은 클래스 같은 패키지 자손 클래스 전체 public O O O O protected O O O default O O private O private - 같은 클래스 내에서만 접근이 가능합니다. default - 같은 패키지 내에서만 접근이 가능합니다. protected - 같은 패키지 내에서, 그리고 다른 패키지의 자손 클래스에서 접근이 가능합니다. public - 접근 제한이 전혀 없습니다. 이러한 접근 제어자를 사용하는..
static
·
Language/Java
JAVA 에서 static키워드를 사용한다는 것은 메모리에 한번 할당되어 프로그램이 종료될때 해제되는 것을 의미합니다. 이를 정확히 이해하기 위해 메모리 영역에 대한 이해가 필요합니다. 일반적으로 프로그래머가 만든 class는 static영역에 생성되고, new 연산을 통해 생성된 객체는 heap영역에 생성됩니다. 객체의 생성시에 할당된 heap영역의 메모리는 GC를 통해 수시로 관리를 받는 반면, staic키워드를 통해 static영역에 할당된 메모리는 GC의 관리를 받지 않습니다. 모든 객체가 공유하는 메모리라는 장점을 지니지만, static을 자주 사용하게 된다면 프로그램의 종료시까지 메모리가 할당된채로 남아있기 때문에 사용시 신중한 숙고를 해야합니다. 다음으로 제어자 static에 대해 설명하자면..
클래스와 객체
·
Language/Java
클래스 - 객체를 만들기 위한 설계도 혹은 틀입니다. - 연관되는 변수와 메서드의 집합입니다. - 식상한 비유이지만 붕어빵 틀 객체 - 클래스에 설계한 모양대로 구현된 실체입니다. - 클래스의 타입으로 선언됨 - 소프트웨어 구현 대상 - 현실세계에 가까움 - 붕어빵 여기서 조금 더 상세하게 들어가자면 객체와 인스턴스는 사실 비슷하지만 다른 개념입니다. 인스턴스 - 설계를 바탕으로 소프트웨어 세계에서 구현된 실체 - 객체가 메모리에 할당되어 실제 사용될때 인스턴스라고 불리게 됨 - 소프트웨어에 가까움 - 클래스로부터 객체를 만드는 과정을 '인스턴스화'라고 부름 OOP(Object-Oriented Programming) 객체 지향 프로그래밍이란? 모든 데이터를 객체로 취급하는 프로그래밍을 의미합니다. 객체는..
인터페이스와 추상클래스
·
Language/Java
추상클래스는 한 개 이상의 추상 메서드를 가지는 클래스로, 선언만 되며 구현이 되지 않은 불완전한 메서드이므로 객체로 생성되지 않습니다. 여기서 추상메서드란 내용이 없는 메서드로 구현은 하지 않고 선언만 한 메서드입니다. 추상 메서드를 사용하기 위해 반드시 자식 클래스에서 해당 메서드를 재정의해야합니다. * 인스턴스 변수, 클래스 변수, 생성자, 클래스 메소드, 일반 메소드 선언 및 구현 가능 * 사용 목적 : 공통된 필드, 메소드의 이름 통일과 구체화 클래스 작성시 시간 절약을 위해서 추상클래스 선언 클래스를 선언할때 abstract 키워드를 사용합니다. new 연산자로 객체를 생성하지 못하고 상속을 통해 자식 클래스만 생성 가능합니다. public abstract class 클래스명 { } 추상 메소..
오버라이딩과 오버로딩
·
Language/Java
자바에서 다형성을 지원하는 오버로딩과 오버라이딩이 있습니다. 다형성이란? 하나의 클래스나 함수가 다양한 방식으로 동작하는 것을 의미하며, 대표적으로 오버로딩과 오버라이딩이 있습니다. 하나의 참조 변수로 여러 타입의 객체를 참조할 수 있는 것또한 의미합니다. 즉 조상타입의 참조변수로 자손의 객체를 다룰 수 있는 것이 다형성의 기본 개념입니다. 오버로딩이란? 메서드의 이름은 같고 매개변수의 유형과 개수가 다르도록 하는것을 의미합니다. 리턴값이 다르고 매개변수가 같은 경우는 성립되지 않습니다. Overloading.java public class Overloading { public void overload(){ System.out.println("오버로딩 예제"); } public void overload(..
어노테이션
·
Language/Java
JAVA 5버전부터 추가된 기능으로, 클래스나 메소드 위에 붙여서 사용합니다. ex) @Override 소스코드에 메타코드(추가정보)를 주는 것으로, 클래스가 컴파일 되거나 실행될 때 어노테이션의 유무나 어노테이션의 설정된 값을 통해서 클래스를 다르게 실행되게 할 수 있습니다. 어노테이션의 용도는 다음과 같습니다. 1) 컴파일러에게 코드 작성 문법 에러를 체크하도록 정보를 제공합니다. ex) @Override => 메소드가 재정의 되어있는지 확인합니다. 2 ) 실행(런타임)시 특정 기능을 실행하도록 정보를 제공합니다. ex) 객체가 애플리케이션 내부에서 해야할 역할을 정의할 수 있습니다. (@Controller, @Servlet...) 이 어노테이션은 기본적으로 제공되는 것이 있고, 사용자가 직접 만들어..
takoyummy
'Language/Java' 카테고리의 글 목록 (3 Page)