Java_생활코딩-2021.11.08

Jonguk Kim·2021년 11월 8일
0

Java

목록 보기
4/7

1. 객체 지향 프로그래밍

  • 상태와 행위로 이루어진 객체로 만드는 것
  • 객체는 서로 연관되어 있는 기능들(변수와 메소드)을 그룹핑한 것
  • 컴퓨터 기능별로 쪼갬 (키보드, 마우스, 모니터, 본체)
  • 재활용성

2. 클래스 / 인스턴스 / 객체

  • 클래스(설계도): 연관되어 있는 변수와 메소드의 집합

    class Calculator {

  • 인스턴스(제품): 클래스를 인스턴스화 할 때는 변수에 담아야 함, 변수의 데이터 타입은 클래스임

    Calculator c1 = new Calculator();

  • 객체: 설계도인 클래스가 구체적인 실체인 인스턴스가 되었을 때를 의미, 재활용성
  • 하나의 클래스를 바탕으로 서로 다른 상태(변수)를 가진 인스턴스를 만들면 서로 다른 행동(메소드)을 하게 된다는 것
public void setOprands(int left, int right){ // 매개변수는 지역변수
    this.left = left;		// this는 인스턴스 내의 모든 메소드 접근 가능
    this.right = right;
}

3. 클래스 멤버 / 인스턴스 멤버

  • 멤버는 변수와 메소드로 구성
  • 클래스 멤버: static을 맴버(변수,메소드) 앞에 붙임
    • 인스턴스에 따라서 변하지 않는 값이 필요한 경우 (PI)
    • 인스턴스를 생성할 필요가 없는 값을 클래스에 저장하고 싶은 경우
    • 값의 변경 사항을 모든 인스턴스가 공유해야 하는 경우
  • 인스턴스 멤버: 객체 생성 시 인스턴스 멤버 생성
  • 인스턴스 메소드는 클래스 맴버에 접근 가능
  • 클래스 메소드는 인스턴스 맴버에 접근 불가능
class Calculator2 {
    static double PI = 3.14;
    // 클래스 변수인 base가 추가되었다.
    static int base = 0;
    int left, right;
 
    public void setOprands(int left, int right) {
        this.left = left;
        this.right = right;
    }
 
    public void sum() {
        // 더하기에 base의 값을 포함시킨다.
        System.out.println(this.left + this.right + base);
    }
class C1{
    static int static_variable = 1;
    int instance_variable = 2;
    static void static_static(){
        System.out.println(static_variable);
    }
    static void static_instance(){
        // 클래스 메소드에서는 인스턴스 변수에 접근 할 수 없다. 
        //System.out.println(instance_variable);
    }
    void instance_static(){
        // 인스턴스 메소드에서는 클래스 변수에 접근 할 수 있다.
        System.out.println(static_variable);
    }
    void instance_instance(){        
        System.out.println(instance_variable);
    }
}

4. 유효범위

  • 디렉터리: 디렉터리 내에서 파일명 중복 불가능, 디렉터리 밖에서는 파일명 중복 가능
  • 지역변수: 중괄호 안, 특수한 것이 전체적인 것보다 우선순위가 높음 (메소드 내에서만 접근 가능)
  • 전역변수: static, this.이름: 객체의 전역 변수, 클래스 변수 (클래스 전역에서 접근 가능)

5. 초기화 / 생성자

  • 생성자: 객체 지향 프로그래밍을 초기화 하는 것
  • 인스턴스를 생성할 때 필수적인 작업을 포함시키는 것
  • 인스턴스를 생성해주는 특수한 메소드
  • 값을 반환하지 않음
  • 생성자의 이름은 클래스 이름과 동일함 (약속)
class Calculator {
    int left, right;
 
    public Calculator(int left, int right) {
        this.left = left;
        this.right = right;
    }
 
    public void sum() {
        System.out.println(this.left + this.right);
    }
}
 
public class CalculatorDemo1 {
 
    public static void main(String[] args) {
 
        Calculator c1 = new Calculator(10, 20);	// 필수적인 작업
        c1.sum();
 
    }
 
}
profile
개발일지

0개의 댓글