신입개발자

클래스와 객체 본문

프로그래밍 언어/자바

클래스와 객체

dks_a 2022. 5. 8. 18:36

객체 지향의 발전 : 변수 > 배열 > 구조체 > 클래스

변수  : int i = 10

배열 : int i[] = {10,20....}
구조체 : struct score {int[] i, double sum}, 여기까지 절차지향
클래스 : class score {int[] i, double sum, printSum(), ...

public class 클래스 외부에 위치할 수 있는 것 3가지
1. package    : 현재의 소스파일의 폴더위치를 나타냄
2. import     : 남의 패키지에 있는 클래스를 가져오고 싶을 때
3. 외부클래스 : public 사용금지, 위치 무관, C언어처럼 원형선언 불필요

3. 외부클래스
클래스 : 붕어빵틀, 대문자로 시작, 클래스영역(=메소드 영역)에 위치, 멤버들 = '필드+메소드'+내부(inner) 클래스로 구성
필드   : 클래스 안에서 선언된 변수
메소드 : 클래스 안에서 선언된 함수
생성자 : new와 사용하는 특별한 메소드, 클래스명과 동일
추상클래스 - abstrct 메소드, 미완성 책임을 후세에 전가
인터페이스 - public static final 필드 + public abstract 메소드
객체 : 붕어빵들, 스택영역(주소)
인스턴스 : 클래스를 이용하여 객체를 만드는 행위(=객체와 용어 혼용)

// 1. 패키지
package pk10;

class Frame{ //붕어빵틀 클래스
	// 필드
	String core = "단팥"; // 필드는 해당 클래스 안(단, 메소드 밖)에서 선언된 변수, 힙영역(값)
	// 메소드
	void print() { // 메소드 : 클래스 안에서 선언된 함수, 메소드영역(정의) & 힙영역(주소)
		int i = 500; // 지역변수는 메소드 내에서 선언된 변수, 스택영역(값)
		System.out.println(core + "붕어빵은 " + i + "원"); //메소드내에서 필드 사용 가능
	}
	
}

//지역변수는 스택에
//필드는 힙에


public class 클래스와객체 { //public 클래스는 소스파일명과 동일하고 최대 1개로 유일해야함

	public static void main(String[] args) { // main() 메소드는 패키지에서 유일해야함 
		// 클래스명 객체명 = new 클래스명() 
		Frame bread1 = new Frame(); 
		// new는 힙에 공간 요청하고 그 주소 반환 //붕어빵틀로 붕어빵 쿡 찍음! 
		// 객체명.필드
		System.out.println(bread1.core); //단팥
		// 객체명.메소드()
		bread1.print(); //단팥붕어빵은 500원 // 스택 -> 힙 메모리의 주소로 접근연산자(.)
		System.out.println();
		
		Frame bread2 = new Frame();
		bread2.print(); // 단팥붕어빵은 500원 // 두번째 빵
		System.out.println();
		
		bread1.core = "슈크림"; 
		bread1.print(); //슈크림붕어빵은 500원
		
		
		
	}

}

 

'프로그래밍 언어 > 자바' 카테고리의 다른 글

메소드  (0) 2022.05.08
필드와 지역변수  (0) 2022.05.08
문자열메소드2  (0) 2022.05.08
문자열메소드1  (0) 2022.05.08
문자열3  (0) 2022.05.08
Comments