객체지향 프로그래밍 1

soob·2021년 3월 13일
0

생존 java

목록 보기
3/6

1. 객체지향이란

  • 귀찮아져 버려서 나중에 쓰도록 해야겟다.

2. 클래스와 객체(인스턴스)

2.1 클래스

  • 객체를 정의해 놓은것
  • 객체를 생성하는데 사용

2.2 객체(인스턴스)

  • 클래스에 정의된 내용대로 메모리에 생성된 것

3. 객체의 구성요소

  • 멤버변수 (속성)
  • 메서드 (기능)

4. 객체 생성 방법

class A;
A a 
a = new A()
  • A a 클래스 A타입의 참조변수 a를 선언. 메모리에 a를 위한 공간이 마련된다.
  • a = new A() A 객체가 메모리에 생성된다. 그 이후, 생성된 객체의 메모리 주소르 변수 a에 대입한다.

5. 변수의 종류

  • 인스턴스 변수 : 객체가 생성 될 때 만들어진다. 인스턴스는 독립적인 메모리를 가지므로, 인스턴스간에 공유할 수 없다.
  • 클래스 변수 : static 변수. 클래스변수는 모든 객체가 공통된 저장공간을 공유한다. 클래스가 메모리에 올라간 뒤엔 언제나 사용가능하다.
  • 지역변수 : 메서드 내에 선언된 지역변수. 메서드가 종료되면 사라진다.

6. jvm 메모리 구조

  • Method Area
    • 클래스파일을 읽어 분석해 클래스에 대한 정보를 저장한다. 이 때 클래스 변수도 이 영역에 올라감
  • Heap
    • 인스턴스가 생성되는 공간.
  • Call stack
    • 메서드의 작업에 필요한 메모리 공간. 지역변수, 연산의 중간결과 등을 저장.

7. 기본형 매개변수와 참조형 매개변수

  • 참조형일 경우, 주소값을 복사해서 주는 것 이기 때문에 원본의 값을 변경가능하다.

8. 메서드 종류

  • 클래스 메서드(static) : 클래스 변수와 마찬가지로, 클래스가 메모리에 올라 가면 사용 가능하다.
  • 인스턴스 메서드 : 인스턴스가 생성되면 사용 가능하다.
  • 클래스메서드 내부에서는 인스턴스 변수, 인스턴스 메서드를 호출하지 못한다.

9. 오버로딩

  • 한 클래스내에 같은 이름의 메서드를 선언하는것
  • 이름이 같아야 하고, 매개변수의 개수 또는 타입이 달라야 한다.

10. 가변인자

public func(String... args) {}

func("a")
func("a, b")
func(new String[] {"a", "b"})

11. 생성자

  • 생성자 : 객체가 생성될 때 호출하는 인스턴스 초기화 메서드.
  • 만약, 직접 만들어주지 않으면, 컴파일러가 기본생성자를 만들어 준다.
  • 생성자의 이름은 클래스의 이름과 같다.
  • 반환 값이 없다.

12. 초기화

  • 인스턴스 변수는 초기화 하지 않아도, 기본값으로 초기화 해 준다.
  • 지역변수는 반드시 초기화 후에 사용해야 한다.

12.1 초기화 방법

  • 명시적 초기화

  • 생성자

  • 초기화 블럭

    • 인스턴스 초기화 블럭
    {
    
    }
    • 클래스 초기화 블럭
    static{
    
    }

12.2 멤버변수 초기화 순서

  • 클래스변수 : 기본값 -> 명시적 초기화 -> 클래스 초기화 블럭
  • 인스턴스변수 : 기본값 -> 명시적초기화 -> 인스턴스 초기화 블럭 -> 생성자
profile
쓸데없는 소리를 좋아하는 개발자

0개의 댓글