본문 바로가기
반응형

분류 전체보기351

다양한 연관관계 매핑 (다대일, 일대다) 2023. 02.07 14:00 복습 시작 다양한 연관관계 매핑 연관 관계 매핑 시에 고려해야 할 3가지가 있다. 다중성 단방향, 양방향 연관 관계의 주인 이 점을 유의하면서 다양한 연관관계들을 살펴보겠다. 다대일 단방향 먼저 다대일 [ N : 1 ]이다. 예시 코드는 아래와 같다. @Entity public class Member{ @Id @GeneratedValue @Column(name = "MEMBER_ID") private Long id; private String username; @ManyToOne @JoinColumn(name = "TEAM_ID") private Team team; //getter, setter } @Entity public class Team{ @Id @Generated.. 2022. 2. 28.
접근 제어자 접근 제어자 접근 제어자는 멤버 또는 클래스에 사용되어, 해당하는 멤버 또는 클래스를 외부에서 접근하지 못하도록 제한하는 역할을 한다. 클래스나 멤버 변수, 생성자에 접근 제어자가 지정되어 있지 않다면, 접근 제어자가 default(package-private)임을 뜻한다. 접근 제어자는 클래스, 멤버 변수, 메서드, 생성자에서 사용 가능하며 접근 제어자는 아래와 같이 정리할 수 있다. private : 같은 클래스 내에서만 접근이 가능하다. protected : 같은 패키지 내에서, 그리고 다른 패키지의 자손 클래스에서 접근이 가능하다. default(package-private) : 같은 패키지 내에서만 접근이 가능하다. public : 접근 제한이 전혀 없다. 접근 범위가 넓은 쪽에서 좁은 쪽의 순.. 2022. 2. 28.
final 제어자 final 제어자 final은 '마지막의' 또는 '변경될 수 없는'의 의미를 가지고 있으며 거의 모든 대상에 사용될 수 있다. 변수에 사용되면 값을 변경할 수 없는 상수가 되며, 메서드에 사용되면 오버라이딩을 할 수 없게 되고, 클래스에 사용되면 자신을 확장하는 자손 클래스를 정의하지 못하게 된다. 아래는 final 제어자 사용에 대해 정리한 표다. 클래스 변경될 수 없는 클래스. 확장될 수 없는 클래스가 된다. 그래서 final로 지정된 클래스는 다른 클래스의 조상이 될 수 없다. 메서드 변경될 수 없는 메서드, final로 지정된 메서드는 오버라이딩을 통해 재정의 될 수 없다. 멤버변수 변수 앞에 final이 붙으면, 값을 변경할 수 없는 상수가 된다. 지역변수 변수 앞에 final이 붙으면, 값을 .. 2022. 2. 28.
package(패키지) Package(패키지 ) package, 즉 패키지란 클래스의 묶음이다. 패키지에는 클래스 또는 인터페이스를 포함시킬 수 있다. 또한 서로 관련된 클래스를 그룹 단위로 묶어 놓음으로써 클래스를 효율적으로 관리할 수 있다. 사실 클래스의 실제 이름은 패키지명을 포함한 것이다. 예를 들면 String클래스의 실제 이름은 java.lang.String이다. 그래서 같은 이름의 클래스일 지라도 서로 다른 패키지에 속하면 패키지명으로 구별이 가능하다. 클래스가 물리적으로 하나의 클래스파일(.class)인 것과 같이 패키지는 물리적으로 하나의 디렉토리다. 패키지의 선언은 아주 간단한다. package 패키지명; 클래스나 인터페이스의 소스파일의 맨 위에 다음과 같이 한 줄만 적어주면 된다. 위와 같은 패키지 선언문은.. 2022. 2. 28.
가변인자(varargs) 기존에는 메서드의 매개변수 개수가 고정적이었으나, JDK1.5부터 동적으로 지정해 줄 수 있게 되었으며, 이 기능을 가변 인자라고 한다. 가변 인자는 '타입... 변수명'과 같은 형식으로 선언하며. PrintStream 클래스의 printf()가 대표적인 예다. public PrintStream printf(String format, Object... args) { ... } 위와 같이 가변 인자 외에도 매개변수가 더 있다면, 가변 인자를 매개변수 중에서 제일 마지막에 선언해야 한다. 그렇지 않다면, 컴파일 에러가 발생한다. 가변 인자인지 아닌지를 구별할 방법이 없기 때문에 허용하지 않는 것이다. 이제 아래 코드를 살펴보자. String concatenate(String s1, String s2){ .... 2022. 2. 27.
오버로딩과 오버라이딩 오버로딩 한 클래스 내에 같은 이름의 메서드를 여러 개 정의하는 것을 메서드 오버로딩, 즉 오버로딩이라고 한다. 오버로딩에는 몇 가지 조건이 있다. 메서드 이름이 같아야 한다. 매개변수의 개수 또는 타입이 달라야 한다. 메서드의 이름이 같다 하더라도 매개변수가 다르면 서로 구별될 수 있다. 매개변수에 의해서만 구별되므로 반환 타입은 오버로딩을 구현하는데 아무런 영향을 주지 못한다. 위의 조건을 만족시키지 못하는 메서드는 중복 정의로 간주되어 컴파일 시 오류가 발생한다. 이제 예시를 통해 알아보겠다. long add(int a, long b) { return a+b;} long add(long a, int b) { return a+b;} 두 메서드는 int형과 long형 매개변수가 하나씩 선언되어 있지만,.. 2022. 2. 26.
반응형