[자바] 객체지향 프로그래밍과 자바

tech_bae·2025년 3월 7일

Java

목록 보기
3/10
post-thumbnail

객체 지향(Object-Oriented Programming)

객체지향의 특징

  • 캡슐화(Encapsulation)
    • 객체의 데이터와 메서드를 하나로 묶어 외부로부터 정보를 은닉하는 원칙
    • 객체가 제공하는 공용 메서드를 통해서만 조작가능
    • 접근제어자를 통해 구현될 수 있음
  • 상속(Inheritance)
    • 부모클래스의 속성과 메소드를 자식클래스가 물려받아 사용할 수 있도록 하는 원칙
    • 코드의 재사용성 증가, 객체간의 관계가 명확하짐
  • 다형성(Polymorphism)
    • 동일한 이름의 메서드를 다양한 형태로 구현하는 기능(Overloading, Overriding)
    • 오버로딩
      • 같은 이름 - 다른 매서드 시그니쳐(매개변수 타입, 개수 등)
    • 오버라이딩
      • 상속받은 메서드를 자식 클래스에서 재정의
  • 추상화(Abstraction)
    • 복잡한 시스템내의 중요한 부분만 강조, 세부사항은 숨기는 것
    • 추상 클래스, 인터페이스로 추상화 구현

객체

객체는 데이터와 메서드를 하나로 묶은 실체로 상태행동으로 구성

클래스

객체의 설계도로 생각할 수 있다.

객체의 상태를 나타낼 수 있는 필드와 행동을 나타내는 메서드로 구성

이름은 대문자로 시작

  • 정적변수(Static) : 클래스 자체에 속하여 모든 객체가 공유하는 변수
    • 클래스가 메모리에 올라갈때 같이 적재(클래스 멤버 변수) → 클래스에서 직접 참조 가능
  • 인스턴스변수 : 인스턴스별로 독립적으로 가지는 변수

인스턴스

인스턴스는 클래스을 바탕으로 생성된 객체이다.

new 키워드로 생성

생성자

객체를 초기화하는 메서드

객체의 초기 상태를 설정한다.

  • 생성자가 오버로딩되어 있지 않고 없는 상태면 컴파일러가 기본생성자를 자동 생성한다.
    • 사용자지정생성자가 하나 있으면 이 생성자가 기본생성자의 역할을 함(매개변수는 맞춰줘야 한다.)
  • 생성자의 이름은 클래스의 이름과 같아야한다.
  • 변환타입X

this

객체 자신을 참조하는 키워드

객체의 필드를 참조

public class Test{
	private int age;
	
	public howOld(int age){
		this.age = age;
	}
}

위와 같은 예일때 메서드의 매개변수 age와 필드 age를 구분하기 위해 this.age를 사용하여 객체자신을 참조한다.

생성자 체이닝(Constructor Chaining)

this로 같은 클래스의 다른 생성자를 호출 할 수 있다.

예를 들어 매개변수가 없는 생성자를 호출 했을때

this.(0,0) 이런식으로 다른 생성자를 호출하면 필드에 0값이 들어가게 된다.

스코프(Scope)

변수나 메서드에 접근할 수 있는 범위를 뜻한다.

  • 클래스 스코프
  • 메서드 스코프
  • 블록 스코프
  • 매개변수 스코프
  • 정적 영역 스코프
    • 클래스의 모든 인스턴스가 공유한다.
profile
전 아무고토 몰루고 아무고토 못해여

0개의 댓글