반응형
반응형
생성자 함수의 리턴 타입이 없음 클래스의 이름과 같은 이름으로 함수를 정의 메모리에 객체를 생성하여 영역을 확보 바로 인스턴스 변수에 데이터 셋팅 즉, 설정된 변수에 초기 값을 부여하는 것 this this는 객체 자기 자신을 의미, 자신의 메모리를 가르킴 전역 변수와 지역 변수를 구분짓기 위한 참조 변수 생성자의 파라미터 이름이 전역 변수와 이름이 같을 때 구분하기 위해 사용 this.변수명으로 정의 클래스 변수, static 키워드에서는 this를 사용 할 수 없음 public class ThisTest { String message = "Hi"; // 전역 변수 void setMessage(String message) { this.message = message; // 지역 변수, this로 지역 ..
오버로딩(Overloading) 사전적 - 과적하다, 과부하가 걸리게 하다 컴퓨터에서의 의미 - "메소드의 중복 정의", 즉 같은 이름의 메소드를 사용하는 것 오버로딩의 예시 - 하나의 노래 검색 함수를 두가지로 활용. 노래검색(제목/가수) -> 제목이나 가수로 노래 검색 파이썬에서의 오버로딩 파이썬에서 같은 이름의 메소드를 사용하면 늦게 정의한 메소드로 기능 재정의 (덮어쓰기) class A: def func(self,a): return "hello" def func(self): return "world" a = A() # 클래스 객체 생성 print(a.func()) >>> world print(a.func(1)) >>> TypeError: func() takes 1 positional argumen..
클래스 변수 클래스 이름 공간에 생성, 모든 인스턴스에 공유 인스턴스 변수 인스턴스 이름 공간에 생성, 인스턴스마다 독립 class Var : c_mem = 100 # 클래스 변수 (= 클래스 멤버) def f(self): self.i_mem = 200 v1 = Var() # 인스턴스 변수1 (= 인스턴스 멤버) v2 = Var() # 인스턴스 변수2 (= 인스턴스 멤버) print(Var.c_mem, v1.c_mem, v2.c_mem) >>> 100 100 100 # 클래스 변수의 값은 모든 인스턴스에 공유 v1.c_mem = 50 print(Var.c_mem, v1.c_mem, v2.c_mem) >>> 100 50 100 # 인스턴스 변수의 값은 인스턴스마다 독립적 v1.f() print(v1.i_m..
오버로딩 (Overloading) 하나의 메소드의 이름으로 여러 기능을 구현하는 것 오버로딩의 조건 정의하는 메소드의 이름이 동일해야 함 입력받는 데이터의 데이터 타입이나 파라미터의 수가 달라야 함 public class Add { // 메소드 오버로딩 int add(int x, int y) { return x + y; } float add(float x, float y) { return x + y; } double add(double x, double y) { return x + y; } String add(String x, String y) { return x + y; } public static void main(String[] args) { Add a = new Add(); // 객체 생성 // ..
메모리 할당 정적 할당 메모리를 stack에 저장 지역변수와 매개변수가 저장되는 곳 컴파일 단계에서 메모리를 할당 받는 것 함수가 종료 될 때까지 할당받은 메모리 보유, 종료시 반환 함수가 실행되는 동안 메모리 낭비 가능성 존재 // 메모리 정적 할당 int[] a = new int[5]; // (= arraylist를 사용해서 동적 할당 가능) 동적 할당 메모리를 heap에 저장 실행 단계에서 메모리를 할당 받는 것 자바에서는 역할이 끝나면 가비지 컬렉터가 메모리의 할당 자원을 반환 원래는 사용자에 의해 메모리 공간이 할당되고 해제 배열 선언을 예로, 이후 new 연산자를 사용해 동적 할당 // 메모리 동적 할당 int [] a; a = new int[5]; 가비지 컬렉터 (Garbage Collect..
클래스 (Class) 객체 지향 프로그래밍에서 특정 객체를 생성하기 위해 변수와 메소드를 정의하는 일종의 틀을 의미 객체를 조금 더 효율적으로 생성하기 위해 만들어진 구문 객체 (Object) 클래스에 정의된 내용대로 메모리에 생성된 것 객체 변수의 선언 및 생성(메모리 할당) 객체 변수 선언 : 클래스명 객체명; 객체 변수 생성 : 객체명 = new 클래스명(); 객체의 선언과 생성은 한 줄로도 표현 가능 public class Test { int a; } Test t; // 객체 변수 선언 t = new Test(); // 객체 변수 생성 Test t2 = new Test(); // 객체 변수 선언과 생성 인스턴스 변수 사용과 접근 클래스에서 정의한 변수 인스턴스 변수는 각각의 독립된 공간을 가짐 예..