일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 로또 앱 만들기
- .env
- multiview
- 쿠버네티스 #fabric8
- 로또 등수 알고리즘
- 리사이클러뷰
- 뷰 페이징
- java
- 스프링 환경변수
- 리사이클러뷰 멀티뷰
- 스프링 소셜 로그인
- 중간 테이블 엔티티 최적화
- jpa 최적화
- springboot
- 스프링 환경변수 설정
- 채팅방 구현
- jpa bulk insert
- android studio
- 안드로이드 스튜디오
- jpa dto 매핑
- 스프링 시큐리티 없이
- oauth 로그인
- hibe
- 로또 등수 코드
- 쿠버네티스
- 멀티뷰
- spring 채팅방
- mysql multi-row insert
- 스프링 오어스
- Androoid Studio
- Today
- Total
야미의 개발
[JAVA]자바와 객체지향(3) - 자바가 확장한 객체지향 본문
이 도서를 기반으로 글을 작성하였습니다.
자바의 객체지향을 확장시켜주는 키워드들와 개념들을 살펴보겠습니다.
1. abstract 키워드
추상(abstract) 메소드란?
선언부는 있지만 구현부가 없는 메소드
왜 필요할까?
동물 클래스의 인스턴스를 만들어서 (추상적인 개념) 울어보세요와 같은 메소드를 실행 시킬수 없음
-> 이럴때 추상 매서드를 사용해 울어보세요 메소드를 abstract로 선언!
+추상메서드가 있는 클래스를 상속받은 클래스는 강제적으로 implements, 즉 구현해야한다!
2. 생성자
클래스의 인스턴스, 즉 객체를 만들때는 new 키워드를 사용한다.
이때 클래스명() 또한
반환값이 없고, 클래스명과 같은 객체를 생성하는 메서드
-> 객체 생성자 메서드 라 한다
public 클래스명() {}
이 바로 생성자의 기본 생성자 메소드
자바에서는 인자가 있는 생성자를 만들면 기본 생성자를 만들지 않음 주의!!
3. 클래스 생성 시의 실행 블록, static 블록
static 블록이란 클래스가 스태틱 영역에 배치될 때 실행되는 코드 블록이다.
public class 동물{
static{
System.out.println("동물 클래스 레디 온!");
}
}
클래스는 코드상에서 클래스가 사용될 때 static영역에 배치된다. 따라서
사용하지 않은 클래스의 static 블록은 실행될수 없다
이때 클래스가 사용될 때는
1. 클래스의 정적 속성을 사용할 때
2. 클래스의 정적 메소드를 사용할 때
3. 클래스의 인스턴스를 최초로 만들 때 이다.
또한 static 블록에서 사용될 수 있는 속성과 메소드는 static 멤버 뿐!
-> 객체 멤버에 접근할 수 없기 때문 // 객체 멤버는 클래스가 static 영역에 자리잡은 후 객체 생성을 한 후에 힙에 생성되기때문에
+ 여러번 객체(인스턴스)를 만들어도 한번만 실행됨
4. fianal 키워드
자바에서의 final은 오직 한번만 정의, 할당 할수 있는 키워드이다.
클래스, 메서드, 변수에 사용 가능하다.
- 클래스에 붙는 경우
상속 불가능 - 변수에 붙는 경우
변경 불가능한 상수가 됨! - static final로 사용
초기화를 해주지 않았다면 1번만 초기화 가능 - 메서드에 붙는 경우
재정의, 즉 오버라이딩을 금지
5. instanceof 연산자
만들어진 객체가 특정 클래스의 인스턴스인지 확인하는 키워드
Boolean 타입 반환
참조변수의 타입이 아닌 실제 만들어진 객체의 타입으로 확인!
6. package 키워드
네임스페이스를 만들어주는 역할
네임스페이스란?
네임스페이스는 내부 식별자(형식, 함수, 변수 등의 이름)에 범위를 제공하는 선언적 영역입니다. 네임스페이스는 코드를 논리 그룹으로 구성하고 특히 코드베이스에 여러 라이브러리가 포함된 경우 발생할 수 있는 이름 충돌을 방지하는 데 사용됩니다.
여러개의 클래스들을 구분가능하게 해주는 것
7. interface 키워드와 implements 키워드
interface는 추상메서드와 public 정적 상수만 가질 수 있음
접근제어자 interface 인터페이스이름 {
public static final 타입 상수이름 = 값;
...
public abstract 메소드이름(매개변수목록);
...
}
위가 기본형이지만 static final과 abstract 들을 생략가능함 -> but 명확하게 표기하는 것이 더 좋을 수 있음
8. this 키워드
this 참조 변수는 인스턴스가 바로 자기 자신을 참조하는 데 사용하는 변수
이러한 this 참조 변수는 해당 인스턴스의 주소를 가리킨다.
class Car {
private String modelName;
private int modelYear;
private String color;
private int maxSpeed;
private int currentSpeed;
Car(String modelName, int modelYear, String color, int maxSpeed) {
this.modelName = modelName;
this.modelYear = modelYear;
this.color = color;
this.maxSpeed = maxSpeed;
this.currentSpeed = 0;
}
}
위와같은 Car 클래스 안에서
변수의 우선권은 지역변수가 있으므로 this를 붙여
클래스 내 변수의 값게 메소드의 인자 변수할당
아래의 점들을 유의하자.
- 지역변수와 속성(객체 변수, 정적 변수)의 이름이 같은 경우 지역변수가 우선
- 객체 변수와 이름이 같은 지역 변수가 있는 경우 객체 변수를 사용하려면 this를 접두사로 사용한다.
- 정적 변수와 이름이 같은 지역 변수가 있는 경우 정적 변수를 사용하려면 클래스명을 접두사로 사용한다.
9. super 키워드
상위 클래스의 인스턴스를 지칭하는 키워드
바로 상위 클래스 인스턴스까지 접근 가능
'JAVA' 카테고리의 다른 글
[JAVA]자바와 객체지향(5) - 스프링 삼각형과 설정정보 (2) | 2024.03.12 |
---|---|
[JAVA]자바와 객체지향(4) - 스프링이 사랑한 디자인 패턴 (0) | 2024.03.05 |
[JAVA] 자바와 객체지향(2) - 객체 지향 4대 특성 알아보기 (1) | 2024.02.20 |
[JAVA]자바와 객체지향(1) - JAVA가 만들어진 이유와 실행환경 간단히 살펴보기 (0) | 2024.02.13 |
[JAVA]객체 지향 프로그래밍의 5가지 원칙 (SOLID 원칙) 예시와 개념 (2) | 2024.02.05 |