220721-객체 지향 언어 핵심 정리하기

개발

1. 캡슐화 : 정보 은닉 

 

2. 상속 : 존의 클래스를 재사용해서 새로운 클래스를 작성하는 것

 

3.추상화 : 객체들의 공통적인 특징을 뽑아내는 것

 

4. 다향성 : 프로그래밍 언어의 요소들이 다양한 자료형 type에 속할 수 있는 성질 

 

 

- 클래스와 객체

 

 

클래스와 객체 : 객체를 정의해 놓은 것 -> 객체를 설명해두는 것 

 

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

 

객체의 정의 : 실제로 존재하는 사물이나 개념 

 

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

 

-클래스와 객체 예시-

 

클래스예시:TV 설계도

객체예시:TV제품

 

객체의 구성요소 : 속성과 기능 

 

속성 : 크기 길이 높이 색상과 같이 -> !변수!

 

기능 : 켜기 끄기 볼륨 높이기 낮추기 채널변경하기 -> !메서드! 

 

 

ex)

 

 

 

Class TV

 

 

class tv{        <----- tv설계도 

 

 

string color ; < ----- 변수들 

boolean power;

int channel;

 

 

void power(){ <-------메서드

 

power=!power;

 

}

 

void channelUp(){

 

channel++;

 

}

 

void Channeldown(){

 

 

channel--;

 

}

 

}

 

---------------------------------------------

 

 

객체와 인스턴스

 

 

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

 

인스턴스 : 특정 클래스로부터 생성된 객체실행 중인 임의의 프로세스,

                클래스의 현재 생성된 오브젝트 

 

 

인스턴스가 객체보다 조금 더 크다고 생각하면 머리가 편하다 

 

 

둘다 클래스로 부터 만들 수 있는 것이다 

 

 

----------------------------------------------

 

 

 

- 클래스 작성 방법 -

 

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

 

2. public class가 없을 때는 소스파일의 이름과 달라도 상관없다

 

3. public class가 2개 이상은 X

 

4. 대소문자까지 완벽하게 일치해야함

 

5. main메소드가 있는 클래스는 반드시 소스파일과 이름이 같아야 한다 

 

 

- 객체의 생성 -

 

클래스명 변수명 : 

 

Tv t -> Tv클래스 타입의 참조변수 t를 선언

 

변수를 선언함 -> 기본형이 아니여서 참조형이다.

 

 

변수명 = new 클래스명;

 

t=new Tv() -> 인스턴스를 생성한 후 , 생성된 tv인스턴스 주소 t를 저장 

 

ex) Scanner sc=new Scanner();

 

Tv객체의 주소를 가지게 된다 -> 주소위치를 알아서 거기서 객체를 다루는 것

 

 

 

void 는 단발성이라 한번만 쓸 때 넣는 것

public 이 들어가는 이유는 어디서든 꺼내쓸 수 있게 하는 것

음악폴더에 음악 게임폴더에 게임이 있는데

게임하면서 음악도 듣고 싶으면 퍼블릭을 줘야한다

 

private 은 다른 곳에서 꺼내쓰지 못하게 하는 것 

 

 

 

만일 참조변수 t의 이름이 다르면 각 변수가 별도의 변수가 된다 

 

 

Ex)

 

 

t1.channel=7;

t2.channel=8;

 

둘이 다른 공간에 저장이 되기 때문에 서로 별도의 변수가 된다 

 

t1=t2를 해버리면?

 

원래 t2의 공간은 사용불가하고 gc 즉 갈비지 컬렉터가 메모리를 알아서 없애준다

 

즉 하나의 인스턴스를 여러개의 참조변수가 가리키는건 가능하지만 하나의 참조 변수에 여러개의 인스턴스는 불가능 

 

t2가 방을빼고 t1의 방에 들어가버려서 같은 값 7이 된다 

 

'개발' 카테고리의 다른 글

2022-08-29 스마트 에디터 게시판 만들기  (0) 2022.08.29
2022-08-29 페이징처리  (0) 2022.08.29
220720-CSS 공부한 것 간단 정리  (0) 2022.07.20
git을 배워보았다  (0) 2022.07.02
변수와 리터럴의 타입 불일치  (0) 2022.07.01