일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- null/not null
- jsoup
- 변수와 상수
- 원시타입
- 참조타입
- 피연산자
- select
- 오버라이딩
- bufferedInputStream
- exclusive lock
- 오버로딩
- 프로그래머스
- delete
- 추상메서드
- 즉시로딩
- InterruptedException
- 변수와 메서드
- 연산자와의 관계
- 컬렉션 프레임워크
- SQL
- N+1
- foreigen key
- 멱등성
- 서버 스크립트
- Java
- Shared Lock
- 지연로딩
- 프로그래머스 코테
- 메세지 큐
- git 기초
Archives
- Today
- Total
[JAVA_Back-End]
어노테이션 / 오버라이딩 및 오버로딩 본문
728x90
반응형
어노테이션 (@)
- 인터페이스를 기반으로 한 문법으로 주석처럼 코드에 달아 클래스에 특별한 의미를 부여하거나 기능을 주입
- 컴파일러에게 문법 에러를 체크하도록 정보를 제공
- 프로그램을 빌드할 때 코드를 자동으로 생성할 수 있도록 정보를 제공
- 런타임에 특정 기능을 실행하도록 정보를 제공
어노테이션의 종류
표준 어노테이션: 자바에서 기본적으로 제공하는 어노테이션
- @Override: 컴파일러에게 메서드를 오버라이딩하는 것이라고 알림. 컴파일 타임에 오버라이딩에 대한 안정성을 부여함.
- @Deprecated: 앞으로 사용하지 않을 대상임을 알림
- @FunctionalInterface: 함수형 인터페이스라는 것을 알림
- @SuppressWarning: 컴파일러가 경고 메시지를 나타내지 않음
- @SafeVaragrs: 제네릭과 같은 가변 인자의 매개변수를 사용할 때의 경고를 나타내지 않음
메타 어노테이션: 어노테이션에 붙이는 어노테이션 (어노테이션을 정의하는 데 사용)
- @Target: 어노테이션을 정의할 때 적용 대상을 지정하는 데 사용
- @Documented: 어노테이션 정보를 javadoc으로 작성된 문서에 포함시킴
- @Inherited: 어노테이션이 하위 클래스에 상속되도록 함
- @Retention: 어노테이션이 유지되는 기간을 정하기 위해 사용함
- @Repeatable: 어노테이션을 반복해서 적용할 수 있도록 함
사용자 정의 어노테이션: 사용자가 직접 정의하여 사용하는 어노테이션
오버라이딩과 오버로딩
오버로딩(OverLoading)
-> 한 클래스 내에 이미 사용하려는 이름과 같은 이름을 가진 메소드가 있더라도 매개변수의 개수 또는 타입이 다르면, 같은 이름을 사용해서 메소드를 정의할 수 있다.
public class Example{
public int Test(int i, int j){
return i-j;
}
public int Test(int i, int j, int k){
return i+j+k;
}
public int Test(double i, double j){
return i*j;
}
}
public static void main(String args[]){
Example ex = new Example();
int i = ex.Test(3,4);
int j = ex.Test(4,5,6);
int k = ex.Test(2.3,4.5);
}
=> 동일한 메소드의 이름을 사용하여 사용의 편리성과 다형성을 실현
오버로딩의 조건 및 특징
- 메서드 이름이 같아야 한다.
- 매개변수 유형이나 파라미터 개수, 순서가 달라야 한다.
- 반환값을 통일하지 않아도 된다.
- 메서드의 이름, 매개변수 유형, 개수가 다 같고 리턴값만 다르면 성립X
오버라이딩(Overriding)
-> 상위 클래스의 메소드를재정의 하는 것을 의미함. 또는 부모 클래스를 상속받아도 자식 클래스에서 같은 형태(이름, 매개변수 동일)의 클래스를 재정의하면 자식 메서드가 적용된다.
Class Main{
public static void main(String[] args) throws IOException{
Animal animal = new Animal();
animal.cry();
Cat cat = new Cat();
cat.cry();
Dog dog = new Dog();
dog.cry();
}
static class Animal{
void cry(){
System.out.println("히잉“);
}
}
static class Cat extends Animal{
@Override
void cry(){
System.out.println("야옹”);
}
}
static class Dog extends Animal{
@Override
void cry(){
System.out.println("멍멍“);
}
}
}
오버라이딩을 사용하는 경우
- 자식 class에서 부모 class와 다르게 동작하고 싶을 때
- 자식 class간에도 서로 다르게 동작하고 싶을 때 새로 정의해서 사용
728x90
반응형
'Programming > JAVA' 카테고리의 다른 글
클래스 / 객체 / 정적(Static) (1) | 2024.02.13 |
---|---|
[JAVA] 인터페이스 / 추상 클래스 (0) | 2024.02.10 |
Collection Framework와 Generic (0) | 2024.02.06 |
JVM과 JAVA 실행방식 (0) | 2024.02.06 |
[JAVA] 데이터 출력 (xml, json) (0) | 2023.09.21 |