객체 지향 프로그래밍(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 |