본문 바로가기
AI빅데이터융합웹개발자양성과정/JAVA

[Java] 클래스

by 밍구적 2023. 4. 14.

2023.04.14 자바 네번째 시간! + 04.17 클래스 보충내용 있음!

클래스(Class)

객체를 만들기 위해 존재하는 '틀'  →  객체를 찍어내는 역할. 자료형 및 타입을 임의로 정의해서 사용하는 '틀'로 정의 할 수 있다. 클래스는 객체의 상태를 나타내는 필드(field, 클래스에 포함된 변수)와 객체의 행동을 나타내는 메소드(method, 특정 작업을 수행하기 위한 명령문의 집합)로 구성.

 

 

객체(Object)

실생활 속에 존재하는 모든 물체 / 사물. 클래스를 통해 만들어 진것을 의미한다.

class Person {
	// 상태 -> 멤버 변수
	// 멤버 변수 선언
	// [접근제어자][타입][변수이름];
	public String name; // 이름
	public String gender; // 성별

	// 행동 -> 멤버 변수
	
}

//파일 안에 대표 클래스가 반드시 하나는 잇어야함.
public class Class { // 대표 클래스 : main을 여기에 작성

	public static void main(String[] args) {
		// 객체 생성
		// [클래스명][객체명]= new [클래스명]();
		Person p = new Person();	//"Person 타입의 객체 lee를 선언하라."
		Person n = new Person();
		
		//객체 멤버 접근
		//[객체명].[멤버이름]
		p.name = "Mimi";
		p.gender = "Woman";
		
		n.name = "DH";
		n.gender = "Man";
		
		System.out.println("p의 name 값 :" + p.name );
		System.out.println("p의 gender 값 : " + p.gender );
		System.out.println("-------------------------------");
		System.out.println("n의 gender 값 : " + n.gender );
		System.out.println("n의 gender 값 : " + n.gender );
		
		//클래스를 통해서 모양을 찍어내고
		// 객체가 된 상태로 속을 채워낸다.
		
	}

}

 

인스턴스(Instance)

자바에서 클래스를 사용하기 위해서는 해당 클래스 타입의 객체를 선언해야 한다. 이렇게 선언된 해당 클래스 타입의 객체를 인스턴스 라고 한다. 하나의 클래스로부터 여러 개의 인스턴스를 생성 할 수 있다.

 

+ 04.17 클래스 보충내용

// 예제 : 책 클래스
// class  클래스이름{
//		멤버 나열
// }
class Book {
	// 멤버 변수
	private String name; // 책 이름
	public String writer; // 저자 이름
	public String publish; // 출판사 이름
	public int year; // 출간 년도

	// getter, setter
	// this : "이것"
	public String getName() { // 함수를 호출한 객체의 name 값 반환
		return name;
	}

	public void setName(String name) { // 함수를 호출한 객체의 name 값을 매개변수로 받은 값으로 설정
		this.name = name;
	}

	// 멤버 함수
	// 모든 멤버 변수 값 출력하는 메소드 만들기
	public void Print() {
		System.out.println("책이름 : " + name);
		System.out.println("저자 이름 : " + writer);
		System.out.println("출판사 이름 : " + publish);
		System.out.println("출간년도 : " + year);
		System.out.println();
	}

	// 생성자 : 객체를 생성하는 것(메소드 중 하나)
	// 생성자는 보통 멤버 변수들의 초기값을 설정하는 데에 사용됨.
	// 생성자가 별도로 없을 때에는, 클래스를 선언할 시 자동으로 만들어지는 기본 생성자를 묵시적으로 사용함.
	// public 클래스이름(매개변수타입 매개변수이름, ...){
	// 생성자로 실행할 명령들
	// }
	// 1.구현하는 방식(반환형x)
	public Book() { // 책클래스에 대한 생성자
		 System.out.println("책 클래스에 대한 객체 생성을 수행합니다.");
		 name = "None";
		 writer = "None";
		 publish = "None";
		 year = 0; 
	}
	
    // 오버로딩 : "메소드의 이름은 같지만, 매개변수의 구성이 다를 경우 공존해서 사용할 수 있다."
	// 오버로딩은 생성자 뿐만 아니라 일반적인 메소드 및 함수에서도 적용이 가능하다.
	public Book(String name, String writer, String publish, int year) {
		this.name = name;
		this.writer = writer;
		this.publish = publish;
		this.year = year;
		
	}
}
// 2.호출하는 방식
//	객체 생성시 자동으로 호출

public class Class {

	public static void main(String[] args) {
		// 객체 생성
		// [클래스명][객체명] = new [생성자 호출]();
		Book book = new Book("Java", "Song", "한빛", 2005);
		Book sql = new Book("Sql", "Park","IT-Book", 2018);
		// 접근 제어자 : 멤버에 대한 접근을 제어하는 역할
		// public ("어디에서든 자유롭게 접근이 가능하다.)
		// private ("자신의 클래스 이외의 공간에서 접근을 불허한다.)
		book.Print();
		sql.Print();

		// 객체 멤버 호출, 참조
		// [객체명].[객체에 있는 멤버 변수/함수 이름];
//		book.setName("Java");	//setName: Sql.name = name(매개변수로 받는 정보);
//		book.writer = "Song";
//		book.publish = "한빛";
//		book.year = 2005;
//
//		sql.setName("Sql");
//		sql.writer = "MJ";
//		sql.publish = "시나공";
//		sql.year = 1992;

//		System.out.println("책이름 : " + book.name);
//		System.out.println("저자 이름 : " + book.writer);
//		System.out.println("출판사 이름 : " + book.publish);
//		System.out.println("출간년도 : " + book.year);
//		System.out.println();
//		System.out.println("책이름 : " + sql.name);
//		System.out.println("저자 이름 : " + sql.writer);
//		System.out.println("출판사 이름 : " + sql.publish);
//		System.out.println("출간년도 : " + sql.year);
	}

}

댓글