카카오 클라우드 스쿨 12월 15일 (Java -Class)

최재유·2022년 12월 15일
0

OOP (Object Oriented Programming- 객체 지향 프로그래밍)

  • java는 완전한 객체지향 언어 = java는 class이외의 공간에 실행되는 코드를 작성할 수 없음

객체지향

  • 관련 있는 속성 과 기능을 하나로 묶어서 사용하는 것

1)특징

  • Encapsulation(캡슐화): 속성과 기능을 묶는 것

  • information hiding(정보 은닉): 불필요한 정보는 숨기고 필요한 부분만 외부로 노출 , 클래스와 인스턴스를 만드는 것

  • Inheritance(상속):상위클래스의 모든 것을 하위 클래스가 물려받는 것

  • Polymorphism(다형성):동일한 메시지에 대하여 다르게 반응하는 성질- 동일한 코드가 다른 메서드를 호출하는 것

2) 객체지향의 장점

  • 재사용성이 증가(캡슐화 덕분에): 중복되는 코드를 클래스 단위로 작성을 해서 상속을 이용하면 재사용성이 증가

  • 코드 관리 용이: 관련 있는 속성과 메서드를 묶어놓았기 때문에 관리하기 편리

  • 신뢰성이 높은 프로그래밍이 가능 - 접근 제한(정보은닉의 기능)

Class 와 Instance

1)Class

  • 동일한 목적을 가진 속성(변수- 데이터) 과 기능(메서드- method)의 집합

  • 사용자 정의 자료형 : 개발자가 원하는 대로 만들어서 사용

  • 유사한 인스턴스들의 설계도

  • 자바에서는 클래스는 프록램을 실행할 때 정적 영역에 메모리를 할당해서 저장되고 정적인 형태로 존재합니다.

2)Object(객체)

  • 프로그램에 존재하는 모든 것

  • Class를 기반으로 만들어진 Object를 Instance

  • int a = 10; 이면 a는 객체이지만 인스턴스는 아니다.

3)Instance

  • Class를 기반으로 만들어진 Object

  • new 라는 연산자로 constructor를 호출해서 생성

  • 동적- 필요한 내용을 수정할 수 있고 삭제할 수 있습니다. 더만드는건 안됨

Class 구성요소

1)속성 (property): field, state, attribute

  • static 속성 -class가 소유(공유)

  • instance 속성 - instance 가 소유

2기능(method) :behavior(행위)

  • static method: 클래스가 호출

  • instance method: 인스턴스가 호출

3)Constructor(생성자)

  • 인스턴스를 만들 때 호출하는 특별한 용도의 메서드

4)초기화 블럭

  • static 초기화
  • instance 초기화

5)Nested Class

  • 클래스 안에 만들어진 클래스

클래스 생성

  • [public 이나 생략 - package][클래스 특성] class 클래스 이름 [extends 클래스 이름][implements 인터페이스 이름 나열] {
    내용}

  • IDE에서는 이름만 정하면 나머지는 선택할 수 있도록 해줍니다.

  • public 부분은 접근제한자라고 하는데 클래스 안에 만들어지는 클래스는 private이나 protected도 가능

  • 클래스는 특성으로는 abstract(추상- 상속을 통해서만 사용) 나 final(종단 -상속을 할 수 없는 클래스 ) 이 가능

  • extends는 상속을 받고자 하는 경우에 사용하는 것으로 생략하면 java.long.Object 클래스로부터 상속받음

  • implements는 인터페이스를 구현하고자 할 때 사용

  • 클래스 이름은 대문자로 시작하는 것이 관례

  • 소스 파일 이름
    • 하나의 파일 안에 존재하는 클래스 이름으로 만들어져야 함

    • 하나의 파일에 여러개의 클래스를 만드는 것이 가능한테 public클래스는 1개만 생성

    • 여러개의 클래스가 존재할 때는 public 클래스의 이름으로 파일 이름을 설정해야 합니다.

    • public 클래스가 없는 경우에는 아무 클래스 이름이나 상관없음

    • 하나의 파일에 여러개의 클래스를 만들고 컴파일을 하게되면 클래스 파일은 여러개가 됩니다.

    • 이렇게 만들어진 클래스 파일을 자바에서는 byte code라고 합니다.

    • 이 bute code 를 JRE(JVM이 JRE보다는 작은 개념)가 보고 운영체제가 이해할 수 있는 코드로 번역해서 실행합니다.

인스턴스 생성

  • new 라는 연산자를 이용해서 생성자를 호출하면 Heap 영역에 메모리 할당을 하고 그 참조를 리턴

  • 생성자 이외의 메서드를 이용해서 만들어진 것은 디자인 패턴이 적용되서 내부적으로 생성자를 호출해서 리턴하거나 메서드 내부에서 적적 생성해서 리턴하는 경우이지 생성자를 호출하지 않고는 인스턴스를 생성할 수 는 없음

  • new를 이용해서 생성자를 호출하면 참조를 리턴하는데 이 참조를 저장하지 않으면 이 인스턴스는 다시 사용할 수 없습니다.


    new 생성자(매개변수); //인스턴스 생성 구문


    클래스이름 참조형변수 = new 생성자(매개변수); //인스턴스를 생성하고 재사용하기 위해서 인스턴스의 참조를 변수에 기억시키기

  • 인스턴스 소멸:인스턴스를 참조하는 변수가 없으면 인스턴스는 메모리 정리 대상이 됩니다.
    참조형 변수 =null; //정리 대상이 될 수는 있는데 다른 참조형 변수가 가리키고 있으면 정리 대상이 안되고 정리 대상이 되더라도 바로 소멸되지 않고Garbage Collection이 나중에 메모리 정리를 합니다.

속성이나 메서드 호출

  • 클래스 이름이나 인스턴스이름.속성이름 또는 메서드이름(매개변수 나열)

  • 클래스 내부의 메서드 안에서 자신의 속성이나 메서드를 호출할 때는 클래스 이름이나 메서드 이름을 생략할수 있습니다.

  • entry point 에 해당하는 메서드는 java클래스이름 만으로 호출

클래스와 인스턴스 만들기

  • 클래스를 만들어서 사용할 때는 사용할 클래스들을 별도의 파일에 만들고
    main 메서드를 소유한 클래스에서 이 클래스들을 호출해서 사용

Method

  • 전달받은 인수를 처리해서 결과를 돌려주는 작은 프로그램
  • function이라고 하기도 하는데 function은 전역공간에 만들어져서 어디서나 호출할 수 있는 거싱고 method는 클래스 안에 만들어져서 클래스 나 인스턴스를 통해서만 사용할수 있는것으로 분류합니다.

return

  • 메서드의 수행을 종료하고 호출한곳으로 돌아가는 명령어
  • return 뒤에 있는 문장은 수행되지 않습니다.
    • 메서드를 호출하면 메서드를 호출하기 위한 참조를 기억하기 때문에 메서드의 호출 결과로 하나의 데이터를 받을 수 있습니다.
    • 이렇게 데이터를 받고자 할때 return 다음에 돌려줄 데이터를 기재하면 됩니다.
  • 자바에서는 이렇게 데이터를 돌려둘 때는 메서드 이름 앞에 돌려줄 데이터의 자료형을 기재해야 합니다. => 없으면 void 라고 적어야 합니다.

parameter, argument

  • 메서드를 호출할 때 호출하는 곳에서 넘겨주는 데이터
  • 없을수 있고 개수 제한은 없습니다.
  • 여러개가 되면 순서를 기억해야하기 때문에 매개변수가 여러개인 경우는 그 여러개를 포함하는 클래스를 만들어서 사용하는것을 권장합니다.
  • 클래스 대신에 map을 쓰는경우가 있는데 비추천. map은 가독성 떨어짐.

0개의 댓글