본문 바로가기
AWS(산대특)

DAY 4 - JAVA

by dkdlxl 2024. 1. 23.

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

: 프로그램을 객체들의 집합으로 보는 관점

 

주요 개념

- 클래스(class)와 객체(Object)

- 상속(Inheritance)

- 캡슐화(Encapsulation)

- 다형성(Polymorphism)

- 추상화(Abstraction)

 

SOLID 원칙

- 단일 책임 원칙(SRP)

- 개방 / 폐쇄 원칙 (OCP)

- 리스코프 치환 원칙 (LSP)

- 인터페이스 분리 원칙 (ISP)

- 의조성 역전 원칙 (DIP)

 

클래스 

: 공통된 속성과 기능을 하나로 정의해둔 것 

 

클래스 선언 방법

[접근제어자] class 클래스명 { 속성, 기능 }

[access modifier] class ClassName {
	// fields
    // methods
}

* 클래스를 선언할 때는 클래스 외부에서 선언

 

class ExampleClass1 {

 

속성

: 클래스가 가질수 있는 정보나 상태 
: 일반적으로 변수로 표현 

 

- 인스턴스 변수

: 클래스 영역에서 선언

: 객체가 생성 될 때마다 만들어지고 생성되었을 때만 호출하여 사용 가능
: 각 인스턴스마다 독립적으로 값을 가지는 변수

int attribute1; // 인스턴스 변수 정수타입
double attribute2; // 인스턴스 변수 실수타입

* 인스턴스 변수 자체가 속성이다.


- 클래스 변수(스테틱 변수, 정적 변수)

: 객체를 따로 생성하지 않아도 사용 가능
: 같은 클래스로 생성된 모든 인스턴스가 공유하는 변수 
: 속성 앞에 static 키워드를 사용하여 지정할 수 있음

: 클래스로 직접 접근이 가능

static int staticAttribute; //스테틱 변수

 

메서드

: 클래스에 종속되어 존재하는 코드들의 모음

기능 : 클래스가 가질 수 있는 행동이나 작업

: [접근제어자 일반제어자] 반환타입 메서드명 (*매개변수타입, 매개변수명) {

                   // 메서드 기능 구현

}

accessModifier returnType methodName(parameters) {
	// method body 
}

* 접근 제어자(accessModifier) : 메소드의 접근 권한 정의 (public / protected / default / private)

* 반환 타입(return Type) :메소드가 반환하는 값의 타입을 정의, 반환값이 없을 경우 void 사용

* 메서드이름(methodName) : 메서드 이름, 소문자로 시작

* 매개변수(parameters) : 메서드가 받아들이는 입력값, 파라미터는 선택 사항

 

매개변수 : O, 반환값 : O

int method1 (int arg1, int arg2) {
		// 기능 구현 
		// 반환타입이 void가 아니면 반드시 return으로 결과를 반환해야 함
		return 0;

* (int arg1, int arg2) → 매개변수

* return(반환값)은 같은 타입으로 반환해야 함

 

매개변수 : X , 반환값 : O

int method2 () {
		return 0;
	}

매개변수 : O, 반환값 : X

void method3 (int arg1) {
		// void에서의 return은 강제로 메서드를 종료하기 위해 사용
		return;
	}

* 반환값을 사용하지 않을 때에는 void를 사용

* void : return 되는 타입이 없음을 의미 

 

매개변수 : X , 반환값 : X

void method4 () {                      
	}

 

method 오류 파악 (?)

instance1.method1(1, 2); // 매개변수 O // 10 instance1.attribute1 = 10;을 부여
instance1.method2(); // 매개변수 X // 0 
instance1.method3(0); // 매개변수 O // 0
instance1.method4(); // 매개변수 X // 계산X

 

클래스 메서드(스테틱 메서드, 정적 메서드)

: 모든 인스턴스가 공유하는 메서드

: 반환타입 앞에 static 키워드를 붙여서 사용

static void statiMethod() {
		// static 메서드에서는 instance 변수 접근 및 instance 메서드 호출이 불가
		// System.out.println(attribute1);
		System.out.println(staticAttribute);
		// method2(); 
		statiMethod();
	}

* System.out.println(attribute1); / method2(); : 인스턴스 변수이므로 스테틱에서 사용 불가 

 

전역변수(Global variable) 

: 어느 위치에서든 호출하면 사용 가능

: 함수 밖에 선언하여 클래스 전체에서 사용이 가능한 변수

: 인스턴스 변수(instance), 클래스 변수(static) 

- 구조체
: 다른 타입을 하나로 묶어서 관리하는 것

 

지역 변수 (Local Variables)

: 메소드 또는 생성자 내에서 선언(생성)되어 그 구역에서만 사용 가능 

: 함수 속에 선언되어 해당 함수 속에서만 사용이 가능한 변수

public class A_classAndObject {
	// 전역 필드 (전역 변수)
    // String team; // class 바로 아래 작성
    
	public static void main(String[] args) {
    	// 지역 변수
        // String team; / 메서드 안에 작성
  }
}

 

객체 

: 클래스에 의해 생성되는 *인스턴스(실체)

*인스턴스

: 특정 클래스로 정의된 것을 실체화 한것(객체)

: 인스턴스 변수가 모아져 있는 것

: 인스턴스 변수와 메서드는 반드시 인스턴스를 생성하여 인스턴스로 접근 및 호출

 

객체 생성 방법

: 클래스명 참조변수명 = new 클래스명();

ClassName refferenceVariable = new ClassName();

ExampleClass1 instance1 = new ExampleClass1(); // 생성된 객체를 해당 클래스의 인스턴스라고 함

 

인스턴스가 가지고 있는 속성에 접근 방법

: 인스턴스.속성명;

instance1.attribute1 = 10;
instance1.attribute2 = 3.14;

System.out.println(instance1.attribute1); // 10
System.out.println(instance1.attribute2); // 3.14
System.out.println(instance2.attribute1); // 0
System.out.println(instance2.attribute2); // 0

* instance2.attribute1 / 2 는 지정해두지 않았기에 0이 출력된다.

 

인스턴스가 가지고 있는 메서드 호출 방법

: 인스턴스.메서드();

refferenceVariable.instanceMethod();

 

 

 

 

 

'AWS(산대특)' 카테고리의 다른 글

DAY 5 -JAVA  (0) 2024.01.24
JAVA class 만들기  (0) 2024.01.23
DAY3 - JAVA  (0) 2024.01.22
DAY 2 - JAVA  (0) 2024.01.19
DAY 1 - JAVA  (0) 2024.01.19