Self-study/자바

[자바/Java] 클래스와 객체

Munyoung 2023. 9. 9. 06:31

객체지향 언어(Object Oriented Programming)의 핵심적인 4가지의 개념 

1. 캡슐화

2. 상속

3. 추상화 

4. 다형성 

 

객체지향 언어 = 프로그래밍 언어 + 객체지향개념(규칙) 

규칙을 외워야지 프로그래밍을 할 수 있음. 

 

클래스(class)

클래스의 정의: 클래스란 객체를 정의해놓은 것

클래스의 용도: 클래스는 객체를 생성하는 데 사용 

 

객체의 정의: 실제로 존재하는 것, 사물 또는 개념

객체의 용도: 객체가 가지고 있는 기능과 속성에 따라 다름 

-> 클래스는 설계도, 객체는 제품이라고 생각하면 편함 

클래스의 정의 

1. 설계도 

2. 클래스 == 데이터 + 함수의 결합 

1) 변수: 하나의 데이터를 저장할 수 있는 공간

2) 배열: 같은 종류의 여러 데이터를 하나로 저장할 수 있는 공간 

3) 구조체: 서로 관련된 여러 데이터(종류 관계 x)를 하나로 저장할 수 있는 공간 

4) 클래스: 데이터와 함수의 결합(구조체 + 함수) 

 

3. 사용자정의타입: 원하는 타입을 직접 만들 수 있다. 

class Time{
	int hour; 
    int minute; 
    int second; 
}

 

 

클래스 작성하는 법 

(일반적으로는 하나의 소스파일에 하나의 클래스를 작성하는 것이지만 여러개를 작성할 수 있음.)

1. public class가 있는 경우에 소스파일의 이름은 반드시 public class의 이름과 일치해야 함.

둘다 public이 없다면 main method가 있는 클래스의 이름이 소스파일의 이름이 일치해야 함. (case-sensitive)

// Source file name: Hello

public class Hello{}
	class Hello1 // 이건 잘못됨

2. 다만 public class가 없는 경우엔, 소스파일의 이름은 아무렇게나 가능

// source file name: Hello

class Hello1{}
class Hello2{}

3. 하나의 소스파일에 둘 이상의 public class가 존재하면 안됨. 

// source file name: Hello

public class Hello{}
public class Hello1{}

각 클래스를 별도의 소스파일에 나눠서 저장하던가 아니면 둘 중 하나의 클래스에 public을 없애야함. 

 

객체(object)

객체의 구성요소 

객체 = 속성(변수) + 기능(메서드) 

속성: 크기, 길이, 높이, 색상, 볼륨 등등 

기능: 켜기, 끄기, 채널 변경 등등 

 

객체: 모든 인스턴스를 대표하는 일반적인 용어

인스턴스: 특정 클래스로부터 생성된 객체 

(두 용어는 거의 같은 개념)

 

클래스를 작성하고, 이를 인스턴스화 하면 인스턴스 즉 객체가 생성되는 것. 

클래스가 필요한 이유는 객체를 생성하기 위해서임.  

1. 객체의 생성

참조변수(reference variable)

클래스명 변수명; // 클래스의 객체를 참조하기 위한 참조변수를 선언
변수명 = new 클래스명(); // 클래스의 객체를 생성한 후, 객체의 주소를 참조변수에 저장 

Tv t; // Tv 클래스 타입의 참조변수 t를 선언  
t = new Tv(); // Tv 인스턴스 생성한 후, 생성된 Tv 인스턴스의 주소를 t에 저장

2. 객체의 사용 

t.channel = 7; // Tv인스턴스의 멤버변수 channel의 값을 7로 한다 
t.channelDown(); // Tv 인스턴스의 메서드 channelDown()을 호출한다 
System.out.println("현재 채널은 " + t.channel + "입니다.);

- 하나의 인스턴스를 여러개의 참조변수가 가르키는 것: 가능

- 여러 인스턴스를 하나의 참조변수가 가르키는 것: 불가능 

 

3. 객체배열 

객체배열 == 참조변수 배열 

Tv tv1, tv2, tv3; 

Tv[] tvArr = new Tv[3]; // 길이가 3인 Tv타입의 참조변수 배열로 바꿀 수 있음.

//객체를 생성해서 배열의 각 요소에 저장 
tvArr[0] = new Tv(); 
tvArr[1] = new Tv(); 
tvArr[2] = new Tv(); 

//이것을 다르게 표현하면 
Tv[] tvArr = { new Tv(), new Tv(), new Tv()};

 

 

'Self-study > 자바' 카테고리의 다른 글

[Java] HashMap  (0) 2024.01.02
[자바/Java] overloading  (0) 2023.09.15
[자바/Java] Method(메서드)/ Return / Call Stack  (0) 2023.09.15
[자바/Java] 변수(Variable)  (0) 2023.09.15