본문 바로가기

programming/Gukbi

국비 교육 14일차 - 생성자

728x90
반응형

오늘 배운 내용은 클래스 생성자

계속 집에서 듣느라 좀 많이 지친다

 

일단 바로 정리한것부터 써보면 

 

/*
 * 	1. 메모리 저장 장소(구조) page 261
 * 	   ====================================
 * 		Method영역 => .class, method, static
 * 	   ====================================
 * 		Stack => 지역변수, 매개변수 => 관리 (메모리)
 * 	   ====================================
 * 		Heap => new 이용해서 저장 (인스턴스 변수)
 * 	   ====================================
 * 		class A
 * 		{
 * 			String name; // Heap
 * 			A(String name) // Stack
 * 			{
 * 				this.name (heap에 저장된 name)
 * 				name (지역변수)
 * 			}
 * 			=> 지역변수, 매개변수가 우선순위
 * 		}
 * 		this => A클래스 자신의 객체명 (모든 클래스가 가지고 있다)
 * 
 * 		page 277~278
 * 		1. 클래스를 설계 할때 - 모든 객체가 공통으로 사용하는 변수 => static
 * 			예)
 * 				축구 => 연습 (인스턴스)
 * 					=> 실제 (static)
 * 				=====> static 공간은 프로그램에서 1개만 존재
 * 					   instance공간 => 따라 배치 ======> 클래스한개를 만들고 여러개를 저장
 * 		2. static 변수는 new를 사용해서 메모리를 할당할 필요가 없다 (시스템에 의해서 자동 메모리 할당)
 * 			class A
 * 			{
 * 				static int a=10;
 * 				public void display()
 * 				{
 * 					System.out.println("a="+a)
 * 				}
 * 			}
 * 			class B
 * 			{
 * 				public void display()
 * 				{
 * 					System.out.println("a="+A.a)
 * 				}
 * 			}
 * 		3. static 메소드는 인스턴스 변수를 사용할 수 없다 (new를 이용해서 메모리 저장후에 사용)
 * 		
 * 		page 283
 * 		오버로딩
 * 			=> 한개의 메소드명으로 여러개의 기능 수행
 * 			=> 조건
 * 				1. 한개 클래스안에서 만들어 진다
 * 				2. 메소드명이 동일
 * 				3. 매개변수의 갯수나 데이터형이 다르다
 * 				4. 리턴형은 관계가 없다
 * 				5. 주로 사용처-생성자 
 * 		
 * 		page 291
 * 		생성자
 * 		 역할) 인스턴스변수의 초기화
 * 		 특징) 
 * 				1. 클래스명과 동일
 * 				2. 리턴형이 없다
 * 				3. public 클래스명()
 * 				4. 생성자는 여러개를 만들어서 사용이 가능 (오버로딩)
 * 				5. 기본생성자 (디폴트 생성자) => 매개변수가 없는 생성자
 * 				   =================== 프로그램에서 생성자를 만들지 않은 경우 => 자동으로 컴파일러가 만들어 준다
 * 
 * 		page 300
 * 		변수 => 초기값을 설정 (시작)
 * 				예) 비행기 => 좌표
 * 				   페이지 지정 => page=1
 * 				= 명시적 초기화 => page=1
 * 				= 초기화 블록
 * 				= 생성자
 * 
 * 			class A
 * 			{
 * 				int a=10;
 * 				a=100;
 * 				=> 구현 (X)
 * 				=====================
 * 				{
 * 					=> 구현
 * 				}
 * 				A()
 * 				{
 * 					=> 구현
 * 				}
 * 				======================
 * 				void method()
 * 				{
 * 					=> 구현
 * 				}
 * 			}
 * 			
 * 			순서
 * 			 1. 명시적 초기화 int a=10;
 * 			 2. 초기화 블럭
 * 				{
 * 					a=100;
 * 				}
 * 			 3. 생성자()
 * 				{
 * 					a=200;
 * 				}
 * 			접근지정어
 * 			private : 자신의 클래스에서만 접근이 가능 (데이터를 은닉화)
 * 			default : 같은 패키지에서만 사용이 가능
 * 					  ========(폴더)
 * 			protected : 같은 패키지와 상속받은 클래스 패키지에서 사용이 가능
 * 			public : 공개 (모든 클래스에서 사용이 가능)
 * 			===============================================
 * 			class, 생성자, 메소드 : 다른 클래스 통신 => public
 * 			인스턴스변수 : 
 * 
 */
public class 정리_20210113 {
	int a=10; // 메모리에 아직 저장이 안된 상태
	//가변 매개변수 (...) // 사용자가 매개변수를 몇개 넣을지 모를때 ==> checkbox
	public void display(Object ...str)// Object 쓰면 모든 데이터형 다 사용 할 수 있음
	{
		for(Object s:str) 
		{
			System.out.println(s);
		}
	}
	public static void main(String[] args) {
		정리_20210113 aa = new 정리_20210113(); //a변수가 저장된다.
		System.out.println("a="+aa.a);
		aa.display("a","b","c");
		aa.display("a","b","c","d");
	}

}

.

이렇다...

 

Class Method와 Instance Method의 차이점을 구분해보자면

일단 가장 단순하게 class method들은 static이 붙고, instance method들은 붙지 않는다. 

 

class method는 매개변수만으로 작업이 가능한데, instance method는 반드시 instance를 생성하고 호출이 가능하다. 

 

그 다음은 오버로딩이다. 

 

 

: 1

728x90
반응형

'programming > Gukbi' 카테고리의 다른 글

국비 교육 16일차  (0) 2021.01.15
국비 교육 15일차 - 객체지향프로그램  (0) 2021.01.14
국비 교육 13일차 - Class method  (0) 2021.01.12
국비 교육 12일차 - Class 변수  (0) 2021.01.11
국비 교육 11일차 - Method  (0) 2021.01.10