클랙스와 객체

NOAH·2021년 1월 12일
0
post-thumbnail

객체

어떤 시간의 순서에 따른(절차지향) 프로그램이라기 보다는, 객체 간의 협력을 하면서 프로그램이 만들어지는 방식.

클래스의 기본 용어

객체에 대한 청사진, 객체에 대한 속성과 기능을 표현한 것을 "클래스를 정의한다" 라고 합니다.

  • 특성 : Property
  • 속성 : Attribute
  • 멤버 변수 : Member variable
  • 객체의 기능 : Method, memeber function

학생이라는 클래스를 정의한다고 하면,
학생의 속성에는 학번, 이름, 학년 주거지 등등..
학생의 기능에는 수강신청, 수업듣기, 시험 보기 등등
이 될 수 있습니다.

public class Student{
	
    int studentId;
    String studentName;
    int grade;
    String Address ;
 
 }
    

클래스는 대부분 대문자로 시작하며 모드 자바코드는 클래스 내부에 위치합니다.

하나의 java파일에는 하나의 클래스를 두는 것을 원칙으로 합니다.
(단, 여러개의 클래스가 있을 경우에는 public클래스는 단 하나이고 public클래스는 java파일명과 동일해야 합니다.)

이 클래스를 보여주는 Method도 만들어 볼까요.

public void showStudentinfo(){
	System.out.println(studentName +"," + address)
}

학생클래스와 학생이름과 주소를 보여주는 메써드가 구현됬습니다. 그러나 이 소스코드를 실행시켜도 실행이 되지 않습니다.

이 것을 화면에 띄우려면 JVM이 main함수를 통해 호출해주는 형식으로 호출할 수 있습니다.

maing 함수를 호출하는 문법은

public static void main(String[] args{}

으로 아예 형식이 정해져 있습니다.

public static void main(String[] args{ 
	Student studentLee = new student();
    stduentLee.name = '이순신'
    StudentLee.adrress = '지구'
    
    studentLee.showStudenctinfo();
    
}

또는 main함수가 class에 있지 않을 수도 있습니다. 그럴때 다른 java파일을 만들어서 따로 main호출용 파일을 만들 수도 있습니다.

패키지(package)

소스의 묶음.
단순한 클래스 묶음이 아니라 프로젝트 전체를 구성하는 계층 구조가 됩니다. 이 계층 구조를 잘 구성해야 소스 코드 관리나 유지보수를 효율적으로 할 수 있습니다.

메서드(method)

함수의 일종, 객체의 기능을 제공합니다.
함수는? 하나의 기능을 수행하는 일련의 코드입니다.

그래서 메써드를 구현하려면 우선 함수를
코드로 구현해야 할 줄 알아야 합니다.

이 함수를 어떻게 코드로 구현할까요?

int add (int num1, int num2){
	int result;
    result = num1 + num2 ;
    return result;
   
}

더하는 기능을 수행 하니 함수 이름을 add 라고 합니다.

add 앞 : 반환값의 자료형을 나타내는 함수의 반환형을 정해줍시다(리턴이 없는 경우는 void)를 써줍니다.

add의 뒤 : 함수를 수행하는데 필요한 변수인 매개 변수를 입력해줍니다.

클래스에 메써드 구현하기

반환값이 있는 경우

public String getStudentName(){
	return studentName;
}
-----
외부의 접근 권한을 설정하는 접근제어자 + 자료형 + 매써드이름(){
	반환값
}
-----

반환값이 없는 경우

public void String setStudentName(String name){
	studentName = name ; 
}
---
접근제어자 + void + 자료형 + 매써드이름(변수 자료형과 변수이름){
	변수 = 입력받은 매개변수			

}

매써드의이 이름은 사용자 매써드를 어떻게 생각하는지 고려해야 합니다.

Clsss & instance

두가지 데이터 타입에 대하여 Primitive & Reference

기본(primitive) 데이터 타입 :
처음부터 자바에 정해져 있는 데이터 타입

ex. int, char, long, String etc..

참조형(Reference type) 데이터 타입 :

 Stutdent studuetLee = new student();
 참조형데이터 참조변수       생성  생성자

클래스 생성하기

클래스를 사용하기 위해서는 new 예약어를 통해서 생성합니다.


student studentA = new student();
클래스형   변수이름         생성자

클래스를 통해 생성할 수 있는 인스턴스는 무엇인지 알아 볼까요?

하나의 인스턴스를 생성한다는 것은, 그 인스턴스를 위한 메모리 공간이 Heap메모리에 생성이 됩니다.

Stack 메모리는 함수가 호출되면 쌓이고 함수가 종료되면 없어집니다.

동적 메모리 공간인 Heap 메모리는 new라는 키워드에 의해 자동으로 생성되고 없어질 때는 자바언어 자체의 garbage collector에의해 처리 됩니다.

생성자(constructor)

인스턴스를 초기화 하는 하나의 명령어 집합으로 하나의 클래스에는 적어도 하나 이생의 생성자가 존재합니다.

이름은 그 클래스와 동일하며 메소드도 아니고, 상속도 되지 않으며, 리턴값도 없습니다.

생성자는 클래스이름과 동일하고, 반환타입이 없습니다.
new키워드에 의해서만 생성이 됩니다.

생성자가 하나도 없을 때 자바 컴파일러에서 컴파일 과정중에 default생성자이며 생성해줍니다.디폴트 생성자는 매개변수도 없고 구현부도 없습니다.

만약 클래스에 매개변수가 있는 생성자를 추가하면 디폴트 생성자는 자동으로 생성되지 않습니다.

필요에 의해 생성자를 추가 하는 경우 여러 개의 생성자가 하나의 클래스에 있습니다.(overload)

0개의 댓글