JAVA_17_클래스와 객체

7339 단어 JavaJava

객체 지향 프로그래밍

  • 서로 연관되어 있는 데이터와 연산을 그루핑 할 수 있는 기능.

클래스

  • 객체(실세계의 사물) 지향 프로그래밍에서 가장 기본이 됨
  • 정의 : 객체를 정의해 놓은 것
  • 용도 : 객체를 생성
  • 클래스 이용 -> 현실 세계의 특정 물건 지칭 가능
  • 하나의 장소나 위치를 의미
  • 이진 탐색 트리의 하나의 서브 트리
  • 예) Node, Student(하나의 처리할 데이터 단위 명시)

객체

  • 정의 : 실제로 존재하는 것. 사물 또는 개념
  • 용도 : 객체가 가지고 있는 기능(메소드)과 속성(변수)을 사용

클래스와 객체의 개념

  • 클래스 - 객체 : 설계도 - 제품

객체의 구성 요소

  • 객체 = 속성(클래스의 변수) + 기능(클래스의 메소드)
    -> 클래스에 구체화

객체와 인스턴스

  • 객체 : 모든 인스턴스를 대표하는 일반적 용어
  • 인스턴스 : 특정 클래스로부터 생성된 객체

그냥 두 개를 같다고 보면 된다.

  • 클래스의 인스턴스화 = 객체 생성
    -> TV의 설계도의 인스턴스화 = TV 만듦!
Car 클래스 
	{ 속력 / 색상 / 이름 ....}
    --> new Car();  <- 인스턴스화 : Car를 만든다!!

하나의 소스파일에 여러 클래스를 작성할 때

  • public class 이름1이 하나라도 있을 때
    -> 소스파일 이름(이름1.java)과 같아야 한다.
    • ✨하나의 소스파일에는 하나의 public class
  • 하나라도 없는 경우 class 이름2 class 이름3.. 가능하다.


1. 참조변수 선언, 객체 생성

  • 내가만든타입 참조변수명 = new 내가만든타입();
  • 클래스명 참조변수명 = new 클래스명();

    : 내가 요런 타입의 클래스를 생성할 건데 그 이름은 객체이름이야.

    : 이 클래스타입의 참조변수를 선언하고 -> 오른쪽의 객체(인스턴스)를 생성하여 -> 그 주소를 참조변수에 저장한다.

예) Tv t = new Tv();

  • Tv클래스타입의 참조변수 t 선언
  • ✨Tv인스턴스를 생성한 후, 생성된 Tv인스턴스의 주소를 참조변수t에 저장
  • Tv타입은 기본형타입(primitive)이 아니라 참조형타입(reference)이므로 이렇게 객체를 생성해야 한다.
  • 마치 String처럼!
  • ✨ 이 참조변수는 리모컨의 역할을 하기에 중요하다
  • 참조변수는 '변수'다!!
    -> 하나의 값을 가지거나 하나의 저장공간을 가리킨다
    -> 참조변수 하나당 객체 하나가 생성된다.

2. 클래스 만들기

나중에 고치자ㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏ
class 객체이름 {
변수1, 2 선언
: private 또는 생략가능
public void 메소드이름1(매개변수1, 매개변수2){
this.변수1 = 매개변수1;
: ✨ 해당 전역변수인 변수1에 매개변수1을 넣는다.
this.변수2 = 매개변수2;
}

public void 메소드이름2(){
여기서 this.변수1 과 this.변수2를 사용한다.
}

class Tv {
	String color;	//색깔
    	boolean power;	//전원상태, 기본이 false=전원이 꺼진 상태
        int channel;	//채널
        
        void power() {
        	power = !power;	//true로=전원을 켜라
        }
        void channelUp() {
           	++channel;
        }
        void channelDown() {
           	--channel;
        }
}

3. 객체의 변수와 메소드 사용

1) 변수 사용하기

  • 참조변수.클래스에있는변수명 = 대입할것;
    예) t.channel = 7;

2) 매개변수 대입해서 메소드 사용하기

  • 참조변수.클래스에있는메소드(대입할변수1, 대입할변수2);
    : 객체에서 해당클래스에있는 메소드에 변수를 넣어 실행할 거야!
    예) c1.setOprands(10, 20);

2) 매개변수 필요없는 메소드 사용하기

  • 참조변수.클래스에있는메소드();
    예) t.channelDown();
    예) c1.sum();
  • ✨✨이 객체명/참조변수는 리모컨의 역할을 한다. 반드시 호출할 때 요거 써야함!!

  • static메소드는 객체&참조변수 안해도 된다 -> JAVA_18~


Node

  • 만들 때 같은 src폴더 안에 class 생성 -> main메소드 포함 X
  • node : 게임/인공위성.. 이차원공간에서의 위치, 좌표
  • 따라서 좌표 x, y 필요
  • private
    : 외부에서 바꿀 수 없도록(외부패키지와 외부클래스에서 모두 해당 클래스에 접근할 수 없도록)
    -> 보안성이 높다.
    - private는 외부 패키지와클래스에서 접근불가로 보안이 가능하고 내부에있는 this.x가 매개변수인 int x를 가지고 x로 설정가능하다.
  • public
    : 외부에서 접근 가능하도록(외부패키지와 외부클래스에서 모두 해당 클래스에 접근할 수 있도록)
    - public은 내부 외부 모두 접근 가능하므로 Main에 있는 좌표가 Node에 int x와 int y에 대입이 된다.


Ref

좋은 웹페이지 즐겨찾기