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);
}
}
'AI빅데이터융합웹개발자양성과정 > JAVA' 카테고리의 다른 글
[Java] 추상메소드와 상속 (0) | 2023.04.18 |
---|---|
[Java] 메소드(Method)와 상속(Extends) (0) | 2023.04.17 |
[Java] 배열 (0) | 2023.04.13 |
[JAVA] 제어문과 연산자 (0) | 2023.04.12 |
[JAVA] 개발 환경(Eclipse) 설치 및 출력 and 자료형 (0) | 2023.04.11 |
댓글