ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 객체(object)에 대해서
    백엔드/자바 2020. 7. 27. 06:52

    1. 객체(object)란?

    객체는 클래스에서 정의한 내용을 토대로 메모리(실제 저장공간)에 할당된 것으로 프로그램에서 사용되는 데이터 또는 식별자에 의해 참조되는 공간을 의미.

    2. 인스턴스란?

    객체를 정의한 클래스로부터 객체를 만드는 과정을 인스턴스화(Instantiate).

     

    그리고 이렇게 만들어진 객체를 인스턴스(Instantance)라고 부른다.

    3. 객체의 쓰임새

    클래스에 정의된 대로 객체를 만들면 이제 이 객체의 특성은 멤버변수를 통해 정해지고

     

    객체는 메서드를 따라서 일정 동작을 수행하면서 프로그램을 돌아가게 만든다.

    4. 객체 만들기

    객체를 만들기 위해선 new 연산자를 사용해주는데 다음과 같이 만들면 된다.

     

    " 사용하려는 클래스 파일명 + 객체명  + = + new + 사용하려는 클래스파일 파일명 + ( ) "

     

    ※ 참고로 클래스명은 파일명과 동일해야하므로 사용하려는 클래스파일이 담겨진 파일명은 클래스명이다.

     

    ( 1 ) 인간을 만들 수 있는 클래스 파일의 코드

     

    public class Human {  // 클래스 선언 (class + 클래스명)
    	
    	int height;  // 필드, 변수 선언 (자료형 + 변수명)
    	int weight;
    	String personality;
    	
    	void go_to_school(){ // 메서드, 메서드 선언 ( 리턴을 원하는 자료형 + 메서드명 + ( ) )
    	}
    	
    	void study_computer(){
    	}
        
    }
    

     

     

    ( 2 ) 인간 '철수'라는 인스턴스를 만들어낸 메인함수의 코드

     

    package Class_practice;
    
    public class Test {
    
    	public static void main(String[] args) {
        
        	Human 철수 = new Human (); // 철수 인스턴스 생성
            
            철수.height = 180; // Human 클래스의 변수를 불러와 철수의 특성을 정하고 있다.
            철수.weight = 70;
            철수.personality = "Good";
    
    	}
    }

    5. 생성자(Constructor)란?

    클래스 파일 내에서 클래스 명과 동일한 메서드를 "생성자"라고 한다.

     

    생성자는 객체(인스턴스)가 생성될 때 호출되는 인스턴스를 초기화하기 위한 메서드이다.

     

    new 연산자를 통해 객체를 생성할 때 반드시 호출되고 클래스 내에서 가장 먼저 실행되는 일종의 메서드이다.

     

    형식은 다음과 같다.

     

    " 클래스명 + ( 원한다면 입력해줄 매개변수 지정 ) {  } "

     

    별도 생성자를 만들지 않아도 실행과정서 자동으로 생성자가 만들어지는데 이것을 "기본 생성자"라 한다.

     

    다만 생성자를 별도로 만들면 작업을 더 편리하게 할 수 있다.

     

    package Class_practice;
    
    public class Human {  // 클래스 선언 (class + 클래스명)
    	
    	int height;  // 필드, 변수 선언 (자료형 + 변수명)
    	int weight;
    	String personality;
        
        Human(){
        
        }
        
    	void go_to_school(){ // 메서드, 메서드 선언 ( 리턴을 원하는 자료형 + 메서드명 + ( ) )
    	
        }
        
    }
    

     

    생성자를 이용하면 객체를 생성하는 것만으로도 객체에 다양한 특성을 미리 손쉽게 부여할 수도 있다.

     

    기존에는 인스턴스를 생성하고 특성을 부여할 때는 아래와 같이 변수를 따로 불러서 숫자를 지정해야했다.

     

    (1) 별도의 설정이 없는 상태에서 인스턴스 생성 후 변수를 부여하는 코드

     

    package Class_practice;
    
    public class Test {
    
    	public static void main(String[] args) {
        
        	Human 철수 = new Human (); // 철수 인스턴스 생성
            
            철수.height = 180; // Human 클래스의 변수를 불러와 철수의 특성을 정하고 있다.
            철수.weight = 70;
            철수.personality = "Good";
    
    	}
    }

     

     

    하지만 아래와 같이 생성자를 만들면서 특정 데이터를 미리 입력하고 처리하는 명령을 만들어놓으면

     

    인스턴스를 만듦과 동시에 특성을 지정할 수 있다.

     

    (2) 생성자를 통해 인스턴스 생성과 동시에 값을 받아 변수를 부여할 수 있게 짠 클래스 코드

     

    package Class_practice;
    
    public class Human {  // 클래스 선언 (class + 클래스명)
    	
    	int height;  // 필드, 변수 선언 (자료형 + 변수명)
    	int weight;
    	String personality;
    	
       Human(int height, int weight, String personality){
       
    	   this.height = height;
    	   this.weight = weight;
    	   this.personality = personality;
       }
        
    	void go_to_school(){ // 메서드, 메서드 선언 ( 리턴을 원하는 자료형 + 메서드명 + ( ) )
    	}
        
    }
    

     

     

    (3) 생성자 생성과 동시에 값만 입력하면 별도로 특성을 부여할 필요가 없어서 간략하게 줄어든 코드

     

    package Class_practice;
    
    public class Test {
    
    	public static void main(String[] args) {
    		
    		Human 철수 = new Human (180, 70, "Good"); // 철수 인스턴스 생성
    
    	}
    }

     

    6. 생성자의 특성

    생성자의 특성은 세 가지다.

     

    (1) 생성자의 이름은 클래스의 이름과 같아야 한다.

    생성자는 클래스와 이름이 항상 같아야 한다.

     

    (2) 생성자는 반환값이 없다.

    생성자는 일반 메서드와 형식이 비슷하지만 반환값이 존재하지 않는다.

     

    그러므로 별도의 반환값을 적어줄 필요가 없다.

     

    클래스명에 매개변수를 받는다면 매개변수를 소괄호안에 써준다.

     

    그마저도 없다면 쓰지 않고 마무리해도 된다.

     

    (3) 생성자도 오버로딩이 가능하다.

    생성자도 메서드와 같이 오버로딩이란 것이 가능하다.

     

    오버로딩이란 메서드의 이름은 같으나 메서드가 입력을 받는 값의 특성이나 개수를 달리해서

     

    따로 이름을 짓지 않고도 사용할 수 있는 것을 말한다.

     

    - 둘 다 같은 이름을 가진 생성자지만 매개변수가 달라서 다른 생성자로 취급 받는 코드

     

    package Class_practice;
    
    public class Human {  // 클래스 선언 (class + 클래스명)
    	
    	int height;  // 필드, 변수 선언 (자료형 + 변수명)
    	int weight;
    	String personality;
    	
       Human(int height, int weight){  //키와 몸무게만 입력받는 생성자
    	   
    	   this.height = height;
    	   this.weight = weight;
    	   
       }
       
       Human(String personality){ // 성격만 입력받는 생성자
    	   
    	   this.personality = personality;
    	   
       }
        
    }
    

     

     

    - 위 코드대로 클래스를 설정하고 아래와 같이 매개변수를 다르게 넣어 객체 생성이 가능하다.

     

    package Class_practice;
    
    public class Test {
    
    	public static void main(String[] args) {
    		
    		Human 철수 = new Human (180, 70); // 키와 몸무게만 받는 인스턴스 생성
    		Human 영희 = new Human ("good"); // 성격만 받는 인스턴스 생성
    
    	}
    }

     

Designed by Tistory.